Update com inner join não funciona
Olá pessoal, sou nova no fórum e preciso de uma pequena grande ajuda.
Estou no SQL2008, e tenho o seguinte problema, tivemos que desmembrar uma tabela onde antes era uma do cliente/telefone/vendedor criamos uma do vendedor por ano e agora temos que dar um update na tabela do vendedor inserindo o código que o cliente está associado
Ou seja, preciso fazer um inner join entre as tabelas SMMBUSSTRATEGY e SMMBUSRELTABLE e pegar o campo MAINCONTACT( da tabela SMMBUSRELTABLE ) e dar o update no campo EMPLID (da tabela SMMBUSSTRATEGY ).
Porém a Sintaxe que acho em todos os lugares não funciona. A query fica rodando e parece que entra em loop porque não retorna nada e fica horas e mais horas rodando. Até coloquei um where para atualizar menos linhas (umas 1000), e nada..
BEGIN TRAN
UPDATE ESTR SET ESTR.EMPLID = CLI.MAINCONTACT
FROM SMMBUSSTRATEGY ESTR INNER JOIN SMMBUSRELTABLE CLI ON
CLI.DATAAREAID = ESTR.DATAAREAID AND
CLI.BUSRELACCOUNT = ESTR.BUSRELACCOUNT
WHERE CLI.DATAAREAID= 'TRF'
Alguém poderia me ajudar?
Estou no SQL2008, e tenho o seguinte problema, tivemos que desmembrar uma tabela onde antes era uma do cliente/telefone/vendedor criamos uma do vendedor por ano e agora temos que dar um update na tabela do vendedor inserindo o código que o cliente está associado
Ou seja, preciso fazer um inner join entre as tabelas SMMBUSSTRATEGY e SMMBUSRELTABLE e pegar o campo MAINCONTACT( da tabela SMMBUSRELTABLE ) e dar o update no campo EMPLID (da tabela SMMBUSSTRATEGY ).
Porém a Sintaxe que acho em todos os lugares não funciona. A query fica rodando e parece que entra em loop porque não retorna nada e fica horas e mais horas rodando. Até coloquei um where para atualizar menos linhas (umas 1000), e nada..
BEGIN TRAN
UPDATE ESTR SET ESTR.EMPLID = CLI.MAINCONTACT
FROM SMMBUSSTRATEGY ESTR INNER JOIN SMMBUSRELTABLE CLI ON
CLI.DATAAREAID = ESTR.DATAAREAID AND
CLI.BUSRELACCOUNT = ESTR.BUSRELACCOUNT
WHERE CLI.DATAAREAID= 'TRF'
Alguém poderia me ajudar?
Sayurinha
Curtidas 0
Melhor post
Joel Rodrigues
02/10/2014
Você não adicionou o COMMIT TRAN no final?
Creio que o problema do loop infinito possa ser isso. A transação começa e não termina nunca, pois nem tem um commit, nem rollback.
Creio que o problema do loop infinito possa ser isso. A transação começa e não termina nunca, pois nem tem um commit, nem rollback.
GOSTEI 1
Mais Respostas
Sayurinha
02/10/2014
sim eu coloquei, mas queria primeiro ver quantas linhas eram afetadas pra depois dar o commit. Fiz o teste e coloquei o commit tran mas está demorando pra rodar mesmo assim.
GOSTEI 0
Sayurinha
02/10/2014
já tentei varias outras sintaxes mas não consigo fazer. O select com join retorna em menos de 5 segundos, agora o update fica forever rodando
GOSTEI 0
Sayurinha
02/10/2014
Consegui encontrar a divergencia... A Sintaxe está certa, só que após a minha conexão com o banco cair, na volta eu vi que um campo apareceu como errado, e notei que não possuia o campo EMPLID
Resolvido! :D
Resolvido! :D
GOSTEI 0
Fabiano Carvalho
02/10/2014
Se quiser saber quantas linhas foram afetas, basta colocar o código abaixo, logo abaixo do seu upodate
SELECT @@ROWCOUNT
SELECT @@ROWCOUNT
GOSTEI 0