Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Importação de dados de outra tabela

Olá, pessoal, espero que estejam todos bem!

Durante a realização do curso, foi executado o seguinte comando para fazer a importação dos dados de um banco para outro, fazendo a filtragem de um elemento chave primária que estava dando conflito, pois já pertencia ao banco de destino:

INSERT INTO PRODUTOS 
    SELECT CODIGO_DO_PRODUTO AS CODIGO, NOME_DO_PRODUTO AS DESCRITOR, 
    SABOR, TAMANHO, EMBALAGEM, PRECO_DE_LISTA AS PRECO_LISTA 
FROM SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS 
WHERE CODIGO_DO_PRODUTO <> '1040107';

Minha dúvida é em como seria possível fazer esse processo no caso em que já houvessem muitos dados iguais em ambas as tabelas e a filtragem do campo se tornasse algo inviável de se fazer um por um, como foi feito acima. Tentei fazer algo mais ou menos da seguinte forma, mas não funcionou:

INSERT INTO PRODUTOS 
    SELECT CODIGO_DO_PRODUTO AS CODIGO, NOME_DO_PRODUTO AS DESCRITOR, 
    SABOR, TAMANHO, EMBALAGEM, PRECO_DE_LISTA AS PRECO_LISTA 
FROM SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS 
WHERE CODIGO_DO_PRODUTO <> PRODUTOS;

Desde já, agradeço muito pela ajuda!

2 respostas
solução!

Oi, Iury! Tudo certo por aí?

Neste contexto, podemos utilizar um recurso bem interessante chamado "subconsulta". Para um melhor entendimento, observe comigo o código abaixo:

INSERT INTO PRODUTOS 
    SELECT CODIGO_DO_PRODUTO AS CODIGO, NOME_DO_PRODUTO AS DESCRITOR, 
    SABOR, TAMANHO, EMBALAGEM, PRECO_DE_LISTA AS PRECO_LISTA 
FROM SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS 
WHERE CODIGO_DO_PRODUTO NOT IN (SELECT CODIGO FROM PRODUTOS);

Aqui, a subconsulta (SELECT CODIGO FROM PRODUTOS) retorna todos os códigos de produtos que já existem na tabela de destino (PRODUTOS). O operador NOT IN possibilita que apenas os códigos de produtos que não estão na tabela de destino sejam considerados.

O assunto de subconsultas é abordado com mais profundidade neste curso:

Espero ter ajudado e que tenha gostado dessa sugestão, Iury! Se surgirem novas dúvidas, conte comigo.

Um abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, Andrieli! Tudo bom sim, obrigado, e por aí?

Muitíssimo obrigado pela ajuda, sanou totalmente minha dúvida!

Abraços!