Ir para conteúdo

Arquivado

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

Marcio Antonio Machado

update com dados de outra tabela com duas condiçoes

Recommended Posts

Boa Noite a todos


Venho pedir a ajuda de vcs para o update abaixo


TABELAS ENVOLVIDAS


MOVIMENTOFINANCEIRO

CAMPOS: titular, cdpessoa, tipolancamento



FORNECEDORES

CAMPOS: cdfornecedor, razaosocial



CLIENTES

CAMPOS: cdcliente, razaosocial



UPDATE movimentofinanceiro M SET M.titular = (select min(F.razaosocial) from FORNECEDORES F

WHERE M.tipolancamento = 'P' AND F.cdfornecedor = COALESCE(M.cdpessoa,''))


O update funciona perfeitamente lê a razão social na tabela FORNECEDORES e grava no campo TITULAR da tabela MOVIMENTOFINANCEIRO conforme o tipo de lançamento 'P' e codigo da pessoa





UPDATE movimentofinanceiro M SET M.titular = (select min(C.razaosocial) from CLIENTES C

WHERE M.tipolancamento = 'R' AND C.cdcliente = COALESCE(M.cdpessoa,''))


O update funciona perfeitamente lê a razao social da tabela CLIENTES E grava no campo TITULAR tabela MOVIMENTOFINANCEIRO conforme o tipo de lançamento 'R' e codigo da pessoa


Só que apos esse segundo select ele apaga o que foi feito no primeiro


Se puderem me ajudar fico muito agradecido






Compartilhar este post


Link para o post
Compartilhar em outros sites
UPDATE movimentofinanceiro M 
SET M.titular = (select min(F.razaosocial) 
                 from FORNECEDORES F
                 WHERE M.tipolancamento = 'P' 
                 AND F.cdfornecedor = COALESCE(M.cdpessoa,''))

 

 

UPDATE movimentofinanceiro M 
SET M.titular = (select min(C.razaosocial) 
                 from CLIENTES C
                 WHERE M.tipolancamento = 'R' 
                 AND C.cdcliente = COALESCE(M.cdpessoa,''))

Repare que são dois comando incondicionais , se aplica a todos os registro da tabela

 

Para corrigir depende do BD, alguns aceitam a síntaxe de join em update outros não.

No Oracle por exemplo isto se resolve com um Cursor e o UPDATE dentro de um loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelo Retorno Motta, tentei fazer um select com join mais obtive o mesmo resultado mais com uma demora muito maior do que esse, resolvi criando um script pelo ibexpert e rodando resolveu. tipo

 

UPDATE MOVIMENTOFINANCEIRO SET

TITULAR = 'FRIMEL PRODUTOS FRIGORIFICOS MEDIANEIRA LTDA'
WHERE (CDPESSOA = 16) AND

(TIPOLANCAMENTO = 'R');

para os 16000 registros

 

Obrigado mais uma vez pelo retorno

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.