Re: [firebase-br] update com left join...é possivel?

Rodolpho da Silva Nascimento rnascimento em cmsolucoes.com.br
Qua Ago 10 11:36:43 -03 2005


Update só é feito em apenas uma tabela.
Se vc desejar fazer um Update com resultados de outra tabela, vc pode fazer 
assim:

UPDATE
    TABELA_A
SET
   CAMPO_A = (SELECT CAMPO_B FROM TABELA_B WHERE CAMPO_C = XYZ)

Mas isso vai atualizar o mesmo valor para todo o CAMPO_A. Se o seu SubSelect 
trouxer mais de uma linha, não será possível executar o UPDATE.

Eu já tive esta necessidade e a única solução foi fazer isto através de uma 
SP.
No seu caso, seria:

CREATE PROCEDURE BLBLB......

....
Vc teria que criar duas variáveis:
:P_STQ.STQ_ID   = Integer
:P_STQ.ORI_ID  = Integer
.....

Executar um FOR ..SELECT

FOR SELECT STQ.STQ_ID, STQ.ORI_ID FROM (Sua tabela STQ que vc não mencionou)
         INTO :P_STQ.STQ_ID, :P_STQ.ORI_ID;
DO
BEGIN
    UPDATE
        STQ_TBD_LOTE SQQ

    SET
         SQQ.SQQ_CODIGO=:CODIGO_NOVO
    WHERE
          SQQ.STQ_ID = :P_STQ.STQ_ID
AND SQQ.ORI_ID  = :P_STQ.ORI_ID
AND SQQ.SQQ_CODIGO='TESTE'

END


Espero que seja isso que vc esteja procurando



T+
Rodolpho





----- Original Message ----- 
From: "marcio" <marcio em altero.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, August 10, 2005 11:14 AM
Subject: [firebase-br] update com left join...é possivel?


Ola Amigos do forum alguem ja usou update com left join ? é possivel fazer 
isto?
como por exemplo:

UPDATE STQ_TBD_LOTE SQQ

LEFT JOIN STQ_TBD_LOTE SQQ
ON ( STQ.STQ_ID = SQQ.STQ_ID
AND  STQ.ORI_ID = SQQ.ORI_ID)

SET SQQ.SQQ_CODIGO=:CODIGO_NOVO
WHERE SQQ.SQQ_CODIGO='TESTE'

Márcio Konrath
CPD - Altero Design

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa






Mais detalhes sobre a lista de discussão lista