Jump to content
TFernandes89

Update em uma linha validando duas colunas, como fazer?

Recommended Posts

Bom dia, preciso atualizar uma linha do meu banco de dados validando duas colunas diferentes... estou tentando da seguinte forma:

 

update produn set prun_margem=prun_margem + 1
  from produtos where prod_codigo=prun_prod_codigo
    and prun_unid_codigo='003' and prun_unid_codigo='050' and prod_grup_codigo='10003'

 

Tenho que atualizar a margem em +1 somente quando se tratar do grupo (prod_grup_codigo) 10003 e nas unidades (prun_unid_codigo) 003 e 050, dessa forma que estou tentando não me da erro, porem não atualiza nada, e se eu tiro a unidade 050 ele atualiza na unidade 003 normalmente.

Share this post


Link to post
Share on other sites
update produn set prun_margem=prun_margem + 1
  from produtos where prod_codigo=prun_prod_codigo
    (and prun_unid_codigo='003' 
    and prun_unid_codigo='050' )
    and prod_grup_codigo='10003'

 

Falta parenteses no campo: prun_unid_codigo

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Julio Albuquerque
      Olá!
      Preciso resolver um script MySql onde preciso efetuar cálculos como se fosse uma conta corrente, onde cada DIA tem um saldo anterior, total de entradas, total de saída e saldo atual do dia.
      Porém o próximo dia deverá ter como saldo anterior o saldo atual do dia anterior,ok?
      Bom, fiz um script que praticamente funcionou, porém em  uma subquery preciso passar o valor da linha da tabela que está sendo atualizada, mas isso não está sendo possível.
      Gostaria de ajuda, caso alguém tenha feito algo semelhante. Abaixo o script:
      update gestao_centro_financeiro_diario g1 set g1.vlsaldo_inicial = (case when idcentrofinanceirodiario = (select * from (select min(g2.idcentrofinanceirodiario) from gestao_centro_financeiro_diario g2 where g2.idcentrofinanceiro = 1) as inicial) then g1.vlsaldo_inicial else (select * from (select g3.saldo_atual from gestao_centro_financeiro_diario g3 where g3.idcentrofinanceirodiario = (select * from (select max(g4.idcentrofinanceirodiario) from gestao_centro_financeiro_diario g4 where g4.idcentrofinanceirodiario < g1.idcentrofinanceirodiario) as id)) as saldo) end), g1.saldo_atual = g1.vlsaldo_inicial + g1.total_entrada - g1.total_saida where g1.idcentrofinanceiro = 1 order by g1.data Meu problema está justamente quando no final do script, onde tem uma cláusula WHERE: ...where g4.idcentrofinanceirodiario < g1.idcentrofinanceirodiario) as id))...
      Onde a tabela g1 é a tabela que está sofrendo o UPDATE.
      Alguém pode ajudar como resolver? Desta ou de outra forma.
    • By ayrtonmaia25
      Pessoal, tô com uma big dúvida e tô perdido, sem saber o que fazer. Me iniciei no PHP há uns 10/15 anos atrás e pelo menos os últimos 5, passei sem trabalhar com desenvolvimento e não me atualizei com a nova versão do PHP e agora tô enfrentando algumas dificuldades, enfim... Preciso fazer um update de várias linhas no banco de dados. Os dados vem de uma lista de forms com uma paginação e preciso que o update atualize os dados das 10 linhas que são listadas por vez. Segue o código da página, dá pra vocês terem uma noção melhor
      <?php $pagina = (isset($_GET['pagina']))? $_GET['pagina'] : 1; //seleciona todos os itens da tabela $cmd = $conn->query("select prod_id from produtos"); $produtos = $cmd->fetch(); //seta a quantidade de itens por página $registros = 10; //variavel para calcular o início da visualização com base na página atual $inicio = ($registros*$pagina)-$registros; // Variáveis para cor da linha $contacor = 0; $cor1 = ""; $cor2 = "#E0E0E0"; echo "<form class=\"form-group\" method=\"post\" action=\"?pagina=".$pagina."&act=up\">"; //seleciona os itens por página $data = $conn->query('SELECT * FROM produtos ORDER BY prod_id LIMIT '.$inicio.','.$registros.''); while($row = $data->fetch()) { $contacor++; // Se o contador for par if($contacor % 2 == 0){ $color = $cor1; } else { $color = $cor2; } ?> <div class="row mb-3" style="background:<?php echo $color; ?>;"> <div class="col-md-3 p-3 text-center"> <img src="images/produtos/<?php echo $row['prod_img']; ?>" class="img-fluid" style="max-height:200px;"> </div> <div class="col-md-9 p-3"> <p class="lead"> <b class="text-primary">ID do produto: <?php echo $row['prod_id']; ?></b> </p> <p class="lead"> <input type="text" class="form-control" id="form44" placeholder="Título para o produto" name="nome[<?php echo $row['prod_id']; ?>]" value="<?php echo $row['prod_title']; ?>"> </p> <p class="form-check text-primary"> <input type="checkbox" class="form-check-input" name="destaque" id="destaque[<?php echo $row['prod_id']; ?>]"<?php if($row['prod_high']=="yes"){echo " checked"; } ?>> <label class="form-check-label" for="exampleCheck1"><b>Produto em destaque</b></label> </p> </div> </div> <?php } ?>  
    • By icorradi
      Tenho uma "rede social" de artigos, e existem mais de 5 milhoes de artigos registrados. Meu backend foi feito com Django, então foi utilizado o Postgres.

      Estou com um grande problema: para fazer a consulta na tabela de artigos, está SUPER lento, claro q o motivo (creio eu), é a quantidade de linhas (mais de 5 milhoes) e a quantidade de texto da coluna do corpo do artigo. Mas como arquitetar meu banco de dados para para ser tipo o wikipedia? Como deixar minha consulta rapida? Separar em varios bancos? 
       
      Como essas empresas gigantes (facebook, wikipedia, amazon, google) fazem pra suportar milhoes de dados?

      O meu problema será q é o Postgres, q não é preparado pra isso?
       
      Obrigado.
    • By Analinee3
      Fiz o mapeamento da atividade e   Fiz o código, mas notei q da erro  bem próximo as chaves. Sou iniciante, não tenho noção do erro , como o q é ou que pode ser.agradeço a ajuda!
       
      CREATE TABLE CLIENTE(
      cod_cliente INTEGER NOT NULL,
      nome_cliente VARCHAR(30) NOT NULL,
      num_pedido  INTEGER,
      PRIMARY KEY(COD_CLIENTE)
      );
       CREATE TABLE TELEFONE (
       cod_cliente  INTEGER NOT NULL,
       telefone_fixo  VARCHAR (10),
       telefone_celular  VARCHAR (10),
       FOREIGN KEY ( COD_CLIENTE)
        REFERENCES  CLIENTE  (COD_CLIENTE)
       PRIMARY KEY ( COD_CLIENTE)
         REFERENCES CLIENTE (COD_CLIENTE)
        ); 
        CREATE TABLE EMAIL_CLIENTE (
         cod_cliente     INTEGER NOT NULL,
        email_cliente,  VARCHAR (30),
         email2_cliente VARCHAR (30),
         FOREIGN KEY ( COD_CLIENTE)
        REFERENCES  CLIENTE  ( COD_CLIENTE)
       PRIMARY KEY ( COD_CLIENTE)
         REFERENCES CLIENTE (COD_CLIENTE)
         );
         CREATE TABLE VENDA (
         num_pedido      INTEGER,
         dt_pedido     TIMESTAMP,
         cod_pedido   INTEGER,
         PRIMARY KEY (NUM_PEDIDO) 
         FOREIGN KEY (COD_PRODUTO)
           REFERENCES  PRODUTO (COD_PRODUTO);
         
        CREATE TABLE VENDA_CONTEM(
      num_pedido        INTEGER,
      cod_produto        INTEGER,
      pco_produto      NUMERIC (6,0),
      qtd              NUMERIC (6,0),
      PRIMARY KEY (NUM_PEDIDO)
      REFERENCES  VENDA( NUM_PEDIDO)
      FOREIGN KEY ( COD_PRODUTO)
       REFERENCES  PRODUTO ( COD_PRODUTO)
       );
       CREATE TABLE PRODUTO (
       cod_produto      INTEGER,
       nom_produto      VARCHAR (30) NOT NULL,
       est_produto     NUMERIC (6,0),
       pco_produto    NUMERIC (6,0),
       fabricante       VARCHAR (30),
       FOREIGN KEY (NUM_PEDIDO)
        REFERENCES  COMPRA ( NUM_PEDIDO)
        PRIMARY KEY (COD_PRODUTO)
       );

       CREATE TABLE COMPRA (
       num_pedido     INTEGER,
       dta_pedido     TIMESTAMP,
        FOREIGN KEY (NUM_PEDIDO)
        REFERENCES  VENDA (NUM_PEDIDO)
        PRIMARY KEY (NUM_PEDIDO)
         REFERNCES VENDA(NUM_PEDIDO)
         );
         CREATE TABLE FORNECEDOR (
         cod_fornecedor         INTEGER,
         nom_fornecedor     VARCHAR (30) NOTT NULL,
         rua_local             VARCHAR (30),
         numero_local      VARCHAR (30),
         PRIMARY KEY ( COD_FORNECEDOR)
         );
      CREATE TABLE TELEFONE_FORNECEDOR(
      cod_fornecedor   INTEGER,
      telefone1   VARCHAR (10),
      telefone2      VARCHAR (10),
      FOREIGN KEY ( COD_FORNECEDOR)
        REFERENCES FORNECEDOR ( COD_FORNECEDOR)
      PRIMARY  KEY ( COD_FORNECEDOR)
          REFERENCES  FORNECEDOR ( COD_FORNECEDOR)
          
        );
        CREATE TABLE EMAIL_FORNECEDOR (
      cod_fornecedor    INTEGER,
      email1_fornecedor  VARCHAR (30),
      email2_fornecedor   VARCHAR (30),
      FOREIGN KEY (COD_FORNECEDOR)
        REFERENCES FORNECEDOR ( COD_FORNECEDOR)
       PRIMARY  KEY ( COD_FORNECEDOR)
          REFERENCES  FORNECEDOR ( COD_FORNECEDOR)
          );

    • By MayraAmaral
      Olá. Estou com problema no meu código php, o update funciona mas quando foi editar aparece todos os alunos na mesma pagina e o código só edita o primeiro.
      Alguém sabe algum jeito de aparecer um aluno só na pagina e editar.
      Quem puder ajudar agradeço muito.
       
       
      editar.php 
      <?php session_start(); $idLogado = $_SESSION['id']; $id_aluno = $_SESSION['id']; $id_responsavel = $_SESSION['id_responsavel']; ?> <!-- Begin Page Header--> <div class="row"> <div class="page-header"> <div class="d-flex align-items-center"> <h2 class="page-header-title">Editar Aluno</h2> <div class="page-header-tools"> <a class="btn btn-gradient-01" href="<?php echo $site_URL; ?>alunos">Alunos cadastrados</a> </div> </div> </div> </div> <!-- End Page Header --> <!-- Begin Row --> <div class="row flex-row"> <div class="col-xl-12 col-12"> <div class="widget has-shadow"> <div class="widget-body"> <?php $query = mysqli_query($conexao, "SELECT * FROM alunos WHERE id='$id_aluno' AND id_responsavel='$idLogado'"); while($ver = mysqli_fetch_array($query)) { $id_aluno = $ver['id']; $nome_aluno = $ver['nome']; $aluno_sobrenome = $ver['sobrenome']; $nascimento_aluno = $ver['data_nasc']; ?> <form id="editarAluno" action="javascript:func()" method="post"> <input type="hidden" id="id" name="id" value="<?php echo $ver['id']?>"> <input type="hidden" id="id_responsavel" name="id_responsavel" value="<?php echo $ver['id_responsavel']?>"> <div class="form-group row d-flex align-items-center mb-5"> <div class="col-lg-9"> <div class="form-group"> <div class="input-group"> <span class="input-group-addon addon-primary"> <i class="la la-user"></i> </span> <input type="text" name="nome" id="nome" value="<?php echo $ver['nome'];?>" class="form-control" required=""> </div> </div> <small>Nome do aluno.</small> </div> </div> <div class="form-group row d-flex align-items-center mb-5"> <div class="col-lg-9"> <div class="form-group"> <div class="input-group"> <span class="input-group-addon addon-primary"> <i class="la la-user"></i> </span> <input type="text" name="sobrenome" id="sobrenome" value="<?php echo $ver['sobrenome'];?>" class="form-control" required=""> </div> </div> <small>Sobrenome do aluno.</small> </div> </div> <div class="form-group row d-flex align-items-center mb-5"> <div class="col-lg-9"> <div class="form-group"> <div class="input-group"> <span class="input-group-addon addon-primary"> <i class="la la-calendar"></i> </span> <input maxlength="10" onKeyUp="barra(this)" name="nascimento" type="text"date-format="DD/MM/YYYY" class="form-control" id="date" value="<?php echo $ver['data_nasc'];?>"> </div> </div> <small>Data de nascimento, fomato 00/00/0000.</small> </div> </div> <div class="form-group row d-flex align-items-center mb-5"> <div class="col-lg-9"> <div class="form-group"> <button type="submit" class="btn btn-gradient-03 mr-1 mb-2">Editar aluno</button> </div> </div> </div> </form> <?php }?> </div> </div> </div> </div> <!-- End Row -->  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.