Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #96714
    maykoncma
    Participante

      Olá pessoal, sou novo aqui e estou tentando atualizar um campo em uma tabela cujo a condição obedeça um select. Porem ao rodar o script me é retornado “0 rows updated”. Quando consulto o select que está entre parenteses há retorno de mais de 1.600 registros. Como proceder? Segue o código abaixo:

      UPDATE CBACD SET PRACA = 'X' where praca in (SELECT cbacd.praca
      FROM CBACD, ACMOV WHERE CBACD.D_ACORDO >= '01-OCT-10' AND CBACD.GRUPO = ACMOV.GRUPO
      AND CBACD.SEQ = ACMOV.SEQ AND CBACD.COTA = ACMOV.COTA and CBACD.AVISO = ACMOV.AVISO)

      #96749
      Peterson
      Participante

        Quando você está comparando com ’01-OCT-10′ você não devia usar uma função TO_DATE para isso?

        #96757
        burga
        Participante

          Teste com áliases nos nomes das tabelas, pois não temos como saber se no SELECT está sendo considerado colunas da tabela CBACD do comando UPDATE ou se estão sendo consideradas as colunas da tabela CBACD da própria subconsulta…

          UPDATE CBACD T
          SET T.PRACA = 'X'
          WHERE T.PRACA IN (
          SELECT T1.PRACA
          FROM CBACD T1, ACMOV T2
          WHERE T1.D_ACORDO >= '01-OCT-10'
          AND T1.GRUPO = T2.GRUPO
          AND T1.SEQ = T2.SEQ
          AND T1.COTA = T2.COTA
          AND T1.AVISO = T2.AVISO);

          #96761
          maykoncma
          Participante

            [quote=”Peterson”:ddhri1h5]Quando você está comparando com ’01-OCT-10′ você não devia usar uma função TO_DATE para isso?[/quote]

            Peterson, na realidade estou considerando D_Acordo sendo maior ou igual a data informada. Apesar de não saber como funciona o TO_Date, creio que ele aponta para a data informada.

            #96762
            maykoncma
            Participante

              [quote=”burga”:qpv9u29o]Teste com áliases nos nomes das tabelas, pois não temos como saber se no SELECT está sendo considerado colunas da tabela CBACD do comando UPDATE ou se estão sendo consideradas as colunas da tabela CBACD da própria subconsulta…

              UPDATE CBACD T
              SET T.PRACA = 'X'
              WHERE T.PRACA IN (
              SELECT T1.PRACA
              FROM CBACD T1, ACMOV T2
              WHERE T1.D_ACORDO >= '01-OCT-10'
              AND T1.GRUPO = T2.GRUPO
              AND T1.SEQ = T2.SEQ
              AND T1.COTA = T2.COTA
              AND T1.AVISO = T2.AVISO);
              [/quote]

              burga, obrigado pelo interesse em ajudar. Vamos la, tentei executar o script e não retornou nada atualizado. (0 rows updated). Ou seja, a mesma resposta do codigo que montei. Teria mais alguma sugestão?

              #96763
              maykoncma
              Participante

                Burga, veja bem. Consegui resultados com o código abaixo porém ainda tenho problemas:

                UPDATE CBACD
                SET cbacd.PRACA = 'X'
                WHERE cbacd.aviso IN (
                SELECT cbacd.aviso
                FROM CBACD, ACMOV
                WHERE CBACD.D_ACORDO >= '01-jan-10'
                AND CBACD.GRUPO = ACMOV.GRUPO
                AND CBACD.SEQ = ACMOV.SEQ
                AND CBACD.COTA = ACMOV.COTA
                AND CBACD.AVISO = ACMOV.AVISO);

                O problema é que a quantidade de updates que o oracle me mostra é o mesmo que se eu consultar toda a tabela com o script

                SELECT COUNT(AVISO) FROM CBACD WHERE D_ACORDO >= '01-jan-10';

                Ou seja, minha consulta não está tratando a condiçao
                CBACD.AVISO = ACMOV.AVISO[/code]

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.