Como fazer UPDATE com duas tabelas diferentes.
Bom dia amigos!
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?
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
Curtidas 0
Melhor post
Marisiana Battistella
02/06/2014
Mil desculpas!!
Eu te mandei um INSERT mas é de um UPDATE que vc precisa....
Segue o exemplo do Isaac...
Eu te mandei um INSERT mas é de um UPDATE que vc precisa....
Segue o exemplo do Isaac...
GOSTEI 1
Mais Respostas
Marisiana Battistella
29/05/2014
Bom dia Gilberto!
Tem como fazer isso sim!
Você terá que utilizar a instrução:
Confira os campos das tabelas....
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
Gilberto Santos
29/05/2014
Boa noite!
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
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
Marisiana Battistella
29/05/2014
Conferiu a sintaxe e os nomes das colunas?
Eu não testei pois não tenho o MySQL aqui, mas deve funcionar sim...
Eu não testei pois não tenho o MySQL aqui, mas deve funcionar sim...
GOSTEI 0
Marisiana Battistella
29/05/2014
Veja a explicação: [url]http://dev.mysql.com/doc/refman/5.0/en/insert-select.html[/url]
GOSTEI 0
Gilberto Santos
29/05/2014
Oi Marisiana obrigado pelo retorno, mas não consegui.
GOSTEI 0
Isaac Jose
29/05/2014
segue exemplo do Sql
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
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
Ricardo Araujo
29/05/2014
O exemplo que a nossa amiga Marisiana esta correto para fazer este exemplo, faça com dois campo e depois vai aumentando.
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
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
Gilberto Santos
29/05/2014
Boa tarde!
Isaac, por favor, poderia me explicar os campos não entendi?
Isaac, por favor, poderia me explicar os campos não entendi?
GOSTEI 0
Isaac Jose
29/05/2014
Boa tarde!
Isaac, por favor, poderia me explicar os campos não entendi?
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
Marisiana Battistella
29/05/2014
Gilberto, você conseguir resolver teu "problema" através do exemplo do Isaac?
GOSTEI 0
Gilberto Santos
29/05/2014
Oi, desculpe a demora estava fora nestes últimos dias, vou testar o código do Isaac nesta sexta feira, pois esta semana vai ser curta.
Mas desde já agradeço a todos, se der certo este código vai me ajudar muito.
Mas desde já agradeço a todos, se der certo este código vai me ajudar muito.
GOSTEI 0
Marisiana Battistella
29/05/2014
Sem problemas Gilberto!
Depois nos dê um retorno pra dizer se conseguiu ou não...
Depois nos dê um retorno pra dizer se conseguiu ou não...
GOSTEI 1
Gilberto Santos
29/05/2014
Amigos desculpe dizer mas ainda nada, tentei executar o update da forma que me explicaram e nada... será que tem mais exemplos...
GOSTEI 0
William
29/05/2014
Olá Gilberto, o problema de se trabalhar com instruções SQL um pouco mais complexas é a falta de padronização entre os SGBDs, cada um faz de um jeito .. 'uma verdadeira zona !!'
No seu caso essa instrução deve resolver, atualizando todos os registros baseado no valor do campo CodProd:
Mas se fosse por exemplo no SQL Server, o INNER JOIN vem depois da dos SETs ... lamentável!
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
Gilberto Santos
29/05/2014
Boa tarde!
Wiliiam obrigado pelo retorno vou testar este codigo e te retorno.
Wiliiam obrigado pelo retorno vou testar este codigo e te retorno.
GOSTEI 0
Gilberto Santos
29/05/2014
William testei o código e deu certo, mas agora só preciso verificar uma questão de performance, pois são mais de 527000 registros e demora o update. Fiz um teste em 157 linhas na que foi em homologação, agora vou ter que preparar uma trigger para disparar em horário programado.
A todos que me ajudaram muito obrigado, por favor, encerrar este tópico.
A todos que me ajudaram muito obrigado, por favor, encerrar este tópico.
GOSTEI 1
William
29/05/2014
Finalizando o tópico!
GOSTEI 0