none
Como comparar uma tabela com outra? RRS feed

  • Pergunta

  •  

    Pessoal, eis o cenario:

     

    Tenho uma tabela onde existem cidades e seus respectivos cnl's.

     

    Preciso criar uma rotina que faça o seguinte:

     

    1) Carga diaria de um txt que contem cidade, uf , cnl ( esse arquivo trara cidades novas, caso surjam e mudanças possiveis no CNL )   ---> esta carga esta pronta. Carrego tudo na tabela CNL

     

    2) Tenho uma tabela chamada Relatorio que ja possui cidade, cnl, e uf etc  . Preciso comparar essa tabelacom a tabela que recebeu a carga e caso exista algum cnl atualizado, atualizar. Caso RELATORIO nao tenha um CNL/cidade/uf que CNL tem preciso fazer um INSERT com esses dados novos.

     

    Nao to sabendo fazer...alguem pode dar alguma ideia?

     

     

    obrigado

    quarta-feira, 3 de dezembro de 2008 18:35

Respostas

  • Boa Tarde,

     

    Dê uma olhada no script abaixo:

     

    Code Snippet

    declare @t1 table (codigo int, nome varchar(50))

    declare @t2 table (codigo int, nome varchar(50))

     

    insert into @t1 values (1, 'Nome 1')

    insert into @t2 values (1, 'Cliente 1')

    insert into @t2 values (2, 'Cliente 2')

     

    -- Mostra o resultado

    SELECT codigo, nome from @T1

     

    -- Atualiza os registros de @t1 com base em @t2 (codigo)

    UPDATE @T1 SET nome = T2.Nome

    FROM @T1 AS T1

    INNER JOIN @T2 AS T2 ON T1.Codigo = T2.Codigo

     

    -- Mostra o resultado

    SELECT codigo, nome from @T1

     

    -- Insere os novos registros em @T1

    INSERT INTO @T1 (codigo, nome)

    SELECT codigo, nome from @T2 AS T2

    WHERE NOT EXISTS

    (SELECT codigo FROM @T1 AS T1 WHERE T2.codigo = T1.codigo)

     

    -- Mostra o resultado

    SELECT codigo, nome from @T1

     

     

    [ ]s,

     

    Gustavo

     

    quarta-feira, 3 de dezembro de 2008 18:41

Todas as Respostas

  • Boa Tarde,

     

    Dê uma olhada no script abaixo:

     

    Code Snippet

    declare @t1 table (codigo int, nome varchar(50))

    declare @t2 table (codigo int, nome varchar(50))

     

    insert into @t1 values (1, 'Nome 1')

    insert into @t2 values (1, 'Cliente 1')

    insert into @t2 values (2, 'Cliente 2')

     

    -- Mostra o resultado

    SELECT codigo, nome from @T1

     

    -- Atualiza os registros de @t1 com base em @t2 (codigo)

    UPDATE @T1 SET nome = T2.Nome

    FROM @T1 AS T1

    INNER JOIN @T2 AS T2 ON T1.Codigo = T2.Codigo

     

    -- Mostra o resultado

    SELECT codigo, nome from @T1

     

    -- Insere os novos registros em @T1

    INSERT INTO @T1 (codigo, nome)

    SELECT codigo, nome from @T2 AS T2

    WHERE NOT EXISTS

    (SELECT codigo FROM @T1 AS T1 WHERE T2.codigo = T1.codigo)

     

    -- Mostra o resultado

    SELECT codigo, nome from @T1

     

     

    [ ]s,

     

    Gustavo

     

    quarta-feira, 3 de dezembro de 2008 18:41
  • Obrigado Gustavo!

     

    Creio que é exatamente isso....

     

    Vou implementar, mas pela previa ja deu para ver que a ideia é por ae...

     

    Muito obrigado!

     

    quarta-feira, 3 de dezembro de 2008 18:57