Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 496415
            [titulo] => Update com inner join não funciona
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-10-02 14:42:42
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => 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. ) )

Update com inner join não funciona

Sayurinha
   - 02 out 2014

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?

Post mais votado

Joel Rodrigues
   - 02 out 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.

Sayurinha
   - 02 out 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.

Sayurinha
   - 02 out 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

Sayurinha
   - 02 out 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

Faabiianooc
   - 03 out 2014

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

SELECT @@ROWCOUNT