Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eliomarlima

UPDATE Oracle

Recommended Posts

Preciso fazer um UPDATE com o conteudo CST = 06 da TABELA TGFDIN.

 

O condição que tenho para fazer esse UPDATE é somente para os produtos com o GRUPOPIS = 'ZERO' (esse campo fica na tabela TGFPRO) e o Código do CFO >= '4999' (Tabela TGFITE)

 

Preciso prencher o campo CST com o conteúdo = '06' (Tabela TGFDIN)

A condição para preencher esse conteúdo é que o GRUPOPIS seja = 'ZERO' (Tabela TGFPRO)

 

Essas duas tabelas não tem relacionamento.

 

O Relacionamento está entre a Tabela TGFITE( Item da Nota Fiscal) com a Tabela TGFPRO(cadastro de Produto) e da Tabela TGFITE com a Tabela TGFDIN ( Sequencia = a mesma nas tabelas TGFITE e TGFDIN) e da Tabela TGFCAB (Cabeçalho da Nota Fiscal com os Itens da Nota Fiscal (TGFITE) é o número da nota fiscal.

 

 

Estou tentando a expressão abaixo, mas, está fazendo o UPDATE para o GRUPOPIS = 'ZERO" e para o GRUPO = 'TODOS'. Não respeita o WHERE GRUPOPIS = 'ZERO'.

 

UPDATE TGFDIN SET CST = 06 WHERE NUNOTA IN (SELECT DIN.NUNOTA
FROM TGFPRO PRO, TGFITE ITE, TGFDIN DIN, TGFCAB CAB
WHERE PRO.CODPROD = ITE.CODPROD
AND CAB.NUNOTA = ITE.NUNOTA
AND ITE.NUNOTA = DIN.NUNOTA
AND ITE.SEQUENCIA = DIN.SEQUENCIA
AND PRO.GRUPOPIS = 'ZERO'
AND ITE.CODCFO >= '4999'
AND DIN.CODIMP IN ('06','07'))

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PauloTI, até onde saiba o Oracle não fazia update com join, mas pode ser que tenha mudado nas últimas versões.

 

Só testando.

 

O caso não é um update com join e sim um select retornando valores e um update para campos que estejam neste retorno.

 

UPDATE TGFDIN SET CST = 06 
WHERE NUNOTA IN (SELECT DIN.NUNOTA
                FROM TGFPRO PRO, TGFITE ITE, TGFDIN DIN, TGFCAB CAB
                WHERE PRO.CODPROD = ITE.CODPROD
                AND CAB.NUNOTA = ITE.NUNOTA
                AND ITE.NUNOTA = DIN.NUNOTA
                AND ITE.SEQUENCIA = DIN.SEQUENCIA
                AND PRO.GRUPOPIS = 'ZERO'
                AND ITE.CODCFO >= '4999'
                AND DIN.CODIMP IN ('06','07'))

 

Rode o select a parte para ver se o retorno é o esperado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.