Ir para conteúdo

Arquivado

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

lucas_rc

Update utilizando 4 tabelas

Recommended Posts

Galera tenho uma tabela que não tem um campo ID nela e eu preceisei fazer uma atualização nela, porém existe alguns filtros que preciso fazer porém nao estou conseguindo fazer um UPDATE usando as 4 tabelas que preciso, o UPDATE que preciso fazer é basiado neste SQL...

 

A versão do MySQL que uso é 4.0.21-nt

 

SELECT l.IdUnidade, p.IdLinha, el.Data, p.IdProdutor, p.IdPropriedade, el.IdEvento,

FROM tbLanc lm

INNER JOIN tbEventoLanc el ON lm.IdNumLancamento=el.IdNumLancamento

INNER JOIN tbPropriedade p On p.IdPropriedade=lm.IdNumLancamento

INNER JOIN tbLinha l ON l.IdLinha=p.IdLinha

WHERE (l.IdUnidade= 2) AND

(p.IdLinha BETWEEN '1' AND '99999') AND

(el.Data BETWEEN '2007-01-01' AND '2007-12-31') AND

(el.IdEvento= '5')

 

Galera como que eu posso estar fazendo este UPDATE.

 

Desde já agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola.

 

Me metendo no meio do topico, mas minha duvida é parecida.

 

Precusi fazer um update sendo que a condição para ele seja uma comparação em outra tabela, mais ou menos isso:

 

UPDATE simula_loja_rede

INNER JOIN simula_loja_consumo_total ON simula_loja_rede.cod_cliente = simula_loja_consumo_total.cod_cliente

SET des_clientes = '2'

WHERE simula_loja_rede.cod_cliente = '30'

 

Esse não funcionou, mas é algo assim que estou precisando, alguem sabe se isso é possivel no UPDATE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Lucas,

 

Analise da seguinte forma: se esse SELECT enviado ao fórum por você retorna os registros que você deseja atualizar, basta comverter este em UPDATE, sem mexer nas junções.

 

UPDATE tbLanc lm INNER JOIN tbEventoLanc el 
ON lm.IdNumLancamento=el.IdNumLancamento INNER JOIN tbPropriedade p 
ON p.IdPropriedade=lm.IdNumLancamento INNER JOIN tbLinha l 
ON l.IdLinha=p.IdLinha
/* AQUI você DEVE SETAR OS VALORES QUE SERÃO ATUALIZADOS */ SET alias1.campo1 =valor1, alias2.campo2 =valor2 [...]
WHERE (l.IdUnidade= 2) AND (p.IdLinha BETWEEN '1' AND '99999') AND (el.DATA BETWEEN '2007-01-01' AND '2007-12-31') AND (el.IdEvento= '5')

 

Fiz um exemplo prático rapidamente aqui para tornar a explicação mais clara:

 

mysql> USE test
DATABASE changed
mysql> UPDATE l1 AS a INNER JOIN l2 AS b SET a.id = b.id;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

 

...somente alinhe as colunas e os valores que serão atualizados no UPDATE, baseados em valores ou não de colunas de outras tabelas envolvidas nas junções...uma detalhe importante, teste o comando em um ambiente de testes e depois execute na produção.

 

Qualquer dúvida volte a postar!!

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.