Fórum Como fazer UPDATE com duas tabelas diferentes. #480611
29/05/2014
0
com fazer update em duas tabelas diferentes:
1º na tabela1 tenho mais de 27000 registros e precisei acrescentar mais 5 colunas
2º tenho a tabela2 que tem os dados das 5 colunas adicionados na tabela1
A duvida é como fazer o update da tabela1 com os dados da tabela2?
na tabela1 tenho os campos
Tbl1 (tabela que ira recebe o update)
CodProd
Descricao
embalagem
NumNF
Rua (campo novo)
Pos (campo novo)
Alt (campo novo)
Genero(campo novo)
Tpgiro(campo novo)
tbl2 (tabela que tem os dados para atualizar a tabela1)
codPro
Descricao
Embalagem
Peso
Vol
Rua(campo para atualizar a tabela1)
Pos(campo para atualizar a tabela1)
alt(campo para atualizar a tabela1)
TpGiro(campo para atualizar a tabela1)
Genero(campo para atualizar a tabela1)
e possível fazer este procedimento?
Gilberto Santos
Curtir tópico
+ 0Post mais votado
02/06/2014
Eu te mandei um INSERT mas é de um UPDATE que vc precisa....
Segue o exemplo do Isaac...
Marisiana Battistella
Gostei + 1
Mais Posts
29/05/2014
Marisiana Battistella
Tem como fazer isso sim!
Você terá que utilizar a instrução:
INSERT INTO tbl2 ( codPro, Descricao,
Embalagem,
Peso,
Vol,
Rua(campo para atualizar a tabela1),
Pos(campo para atualizar a tabela1),
alt(campo para atualizar a tabela1),
TpGiro(campo para atualizar a tabela1),
Genero(campo para atualizar a tabela1) )
SELECT CodProd,
Descricao,
embalagem,
NumNF,
Rua (campo novo),
Pos (campo novo),
Alt (campo novo),
Genero(campo novo),
Tpgiro(campo novo)
FROM Tbl1;
Confira os campos das tabelas....
Gostei + 0
29/05/2014
Gilberto Santos
Obrigado pelo retorno, mas não consegue, veja a msg que me retornou.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') select `PLU`, `RUA`, `POS`, `AL`, from tbl_dun14' at line 1
Gostei + 0
30/05/2014
Marisiana Battistella
Eu não testei pois não tenho o MySQL aqui, mas deve funcionar sim...
Gostei + 0
30/05/2014
Marisiana Battistella
Gostei + 0
01/06/2014
Gilberto Santos
Gostei + 0
02/06/2014
Isaac Jose
update Tb_01
set VlrContMes_Ant = (Tb_Mes_Anterior.vlrContrDia/20)
from Tb_01
inner join Tb_02 on
Tb_02.campo1 = Tb_01.campo1 and
Tb_02.campo1= Tb_01.campo2
abra primeira uma transação teste o comando e se for o que vc espera confirme o comando se não volte ao estado anterior
att Isaac
Gostei + 0
02/06/2014
Ricardo Araujo
isac o primeiro select serve para inserir os dados na tabela 2, o segundo serve para selecionar os dados na tabela 1.
INSERT INTO tbl2 ( codPro, Descricao )
SELECT CodProd, Descricao, From Tbl1
Qualque coisa me avise.
Att:
rbbarreto@hotmail.com
Gostei + 0
02/06/2014
Gilberto Santos
Isaac, por favor, poderia me explicar os campos não entendi?
Gostei + 0
02/06/2014
Isaac Jose
Isaac, por favor, poderia me explicar os campos não entendi?
update Tb_01 --- tabela que sera afetada
set VlrContMes_Ant --campo a ser afetado é = ao campo da tabela que contem a informação tb_02.vlrContrDia
from Tb_01 -- tabela que sera afetada
inner join -- comando de relacionamento Tb_02 on -- tabela que ira fornecer a informação
Tb_02.campo1 = Tb_01.campo1 and --- campos de relacionamento entre as tabelas
Tb_02.campo1= Tb_01.campo2
não esquecer de utilizar transação para que caso não de certo vc consiga retornar o valor antigo.
Begin -- abre transação
commit -- confirma
rollback -- retorna o banco no modo que estava antes da transação ser aberta.
segue link explicando isso em my sql... não conheço my porem parece ser igual ao sql
https://www.devmedia.com.br/transacoes-no-mysql-artigo-revista-sql-magazine-87/21050
espero que funcione e que eu tenha conseguido explicar direito. estou com sono rsrs
Gostei + 0
07/06/2014
Marisiana Battistella
Gostei + 0
09/06/2014
Gilberto Santos
Mas desde já agradeço a todos, se der certo este código vai me ajudar muito.
Gostei + 0
09/06/2014
Marisiana Battistella
Depois nos dê um retorno pra dizer se conseguiu ou não...
Gostei + 1
13/06/2014
Gilberto Santos
Gostei + 0
29/06/2014
William
No seu caso essa instrução deve resolver, atualizando todos os registros baseado no valor do campo CodProd:
UPDATE Tbl1 as tb1 INNER JOIN Tbl2 as tb2 on tb1.CodProd = tb2.CodProd SET tb1.Rua = tb2.Rua, tb1.Pos = tb2.Pos, tb1.Alt = tb2.Alt, tb1.Genero = tb2.Genero, tb1.Tpgiro = tb2.Tpgiro
Mas se fosse por exemplo no SQL Server, o INNER JOIN vem depois da dos SETs ... lamentável!
Gostei + 1
29/06/2014
Gilberto Santos
Wiliiam obrigado pelo retorno vou testar este codigo e te retorno.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)