02/10/2014

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?

Sayurinha

Melhor resposta

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.

Joel Rodrigues

Responder Citar

Outras Respostas

02/10/2014

Sayurinha

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.
Responder Citar

02/10/2014

Sayurinha

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
Responder Citar

02/10/2014

Sayurinha

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
Responder Citar

03/10/2014

Fabiano Carvalho

Se quiser saber quantas linhas foram afetas, basta colocar o código abaixo, logo abaixo do seu upodate

SELECT @@ROWCOUNT
Responder Citar