SQL , INSERT TABELA1 COM SELECT NA TABELA2 E TABELA3
12/06/2019
0
Pessoal, bom dia.
Atualmente tenho uma query que faz insert na tabela1 com um select na tabela2 considerando a chave danfe no where, mas os dados da tabela2 depois de 3 meses são movidos para uma base espelhada na base da tabela 1 e 2. Como posso fazer algo do tipo, insert into tabela 1 from tabela2 quando não encontrado na tabela2 usar a tabela3. (Lembrando que a base da tabela3 é um histórico da base de dados da tabela1 e 2)
Estou quebrando a cabeça e não consegui estruturar algo simples.
Atualmente tenho uma query que faz insert na tabela1 com um select na tabela2 considerando a chave danfe no where, mas os dados da tabela2 depois de 3 meses são movidos para uma base espelhada na base da tabela 1 e 2. Como posso fazer algo do tipo, insert into tabela 1 from tabela2 quando não encontrado na tabela2 usar a tabela3. (Lembrando que a base da tabela3 é um histórico da base de dados da tabela1 e 2)
Estou quebrando a cabeça e não consegui estruturar algo simples.
Flávio Lopes
Curtir tópico
+ 0
Responder
Post mais votado
12/06/2019
Fala Flávio! Você pode usar UNION. Eu testei no sql server o script que vou mostrar abaixo, levando em conta que as três tabelas tem exatamente a mesma estrutura.
declare @nome varchar(50)
set @nome = 'Nascimento'
(select * from tabela2 where sobrenome = @nome) union (select * from tabela3 where sobrenome = @nome)
neste script eu declarei uma variável @nome do mesmo tipo do campo sobrenome varchar (50) na segunda linha atribui valor a esta variável e a utilizei na instrução UNION. É uma instrução com dois selects, em que será trazido de um ou de dois selects desde que a condição no where seja satisfeita.
declare @nome varchar(50)
set @nome = 'Nascimento'
(select * from tabela2 where sobrenome = @nome) union (select * from tabela3 where sobrenome = @nome)
neste script eu declarei uma variável @nome do mesmo tipo do campo sobrenome varchar (50) na segunda linha atribui valor a esta variável e a utilizei na instrução UNION. É uma instrução com dois selects, em que será trazido de um ou de dois selects desde que a condição no where seja satisfeita.
Renato Dias
Responder
Mais Posts
12/06/2019
Daniel Araújo
Boa noite Flávio!
A forma que o renato falou funciona. Se existir a possibilidade de o registro está tanto na tabela 2 quanto na 3, pode ser que cause um problema de duplicação.
Uma outra maneira, que evitaria esse risco, seria assim:
A forma que o renato falou funciona. Se existir a possibilidade de o registro está tanto na tabela 2 quanto na 3, pode ser que cause um problema de duplicação.
Uma outra maneira, que evitaria esse risco, seria assim:
IF (SELECT COUNT(*) FROM TABELA_2 WHERE DANFE = '51080701212344000127550010000000981364117781') > 0 BEGIN INSERT INTO TABELA_1(CAMPO_1, CAMPO_2) SELECT CAMPO_1, CAMPO_2 FROM TABELA_2; END ELSE BEGIN INSERT INTO TABELA_1(CAMPO_1, CAMPO_2) SELECT CAMPO_1, CAMPO_2 FROM TABELA_3; END;
Responder
13/06/2019
Flávio Lopes
Renato, Daniel, bom dia.
Por enquanto obrigado pelo retorno, assim que puder testar informo.
Por enquanto obrigado pelo retorno, assim que puder testar informo.
Responder
Clique aqui para fazer login e interagir na Comunidade :)