SQL - RETORNAR NÃO REPETIDOS
Boa tarde.
Tenho duas tabelas. Com faço para saber quais os registros não repetidos?
Porém, o que eu preciso é que não se repita uma certa combinação de campos e não um campo especÃfico.
Ex:
---Tabela A
id_arquivo
nome
idade
codigo
altura
sexo
---Tabela B
id_depto
nome
idade
codigo
dependentes
A tabela A tem informações que já existem na tabela B. Mas a tabela B não pode ter registros que já existam na tabela A
Preciso saber se os três campos: nome, idade, codigo, existem na tabela B. Mas tem que ser a combinação dos três.
ex:
Se na Tabela A tem (nome, idade, codigo):
Fulano, 20, 1150
Preciso saber se existe exatamente esta sequência na Tabela B.
Pois na tabela B, pode existir o nome Fulano, com 20 anos, contato que não tenha o código 1150
Ou, pode existir um Fulano com código 1150, contanto que não tenha 20 anos. E assim por diante.
Não consegui fazer com o NOT IN, nem com o LEFT JOIN .... campo IS NULL.
Com o UNION consegui juntar as tabelas e o que é repetido ficou de fora. Mas o UNION me trouxe, claro, o que eu já tinha na tabela A e os novos registro da tabela B. Só que eu queria somente os registros da tabela B que não existem na tabela A.
O problema é que todos os campos existem em ambas as tabelas, mas eu procuro uma ocorrência de um conjunto de três campos.
Meio confuso...
Tenho duas tabelas. Com faço para saber quais os registros não repetidos?
Porém, o que eu preciso é que não se repita uma certa combinação de campos e não um campo especÃfico.
Ex:
---Tabela A
id_arquivo
nome
idade
codigo
altura
sexo
---Tabela B
id_depto
nome
idade
codigo
dependentes
A tabela A tem informações que já existem na tabela B. Mas a tabela B não pode ter registros que já existam na tabela A
Preciso saber se os três campos: nome, idade, codigo, existem na tabela B. Mas tem que ser a combinação dos três.
ex:
Se na Tabela A tem (nome, idade, codigo):
Fulano, 20, 1150
Preciso saber se existe exatamente esta sequência na Tabela B.
Pois na tabela B, pode existir o nome Fulano, com 20 anos, contato que não tenha o código 1150
Ou, pode existir um Fulano com código 1150, contanto que não tenha 20 anos. E assim por diante.
Não consegui fazer com o NOT IN, nem com o LEFT JOIN .... campo IS NULL.
Com o UNION consegui juntar as tabelas e o que é repetido ficou de fora. Mas o UNION me trouxe, claro, o que eu já tinha na tabela A e os novos registro da tabela B. Só que eu queria somente os registros da tabela B que não existem na tabela A.
O problema é que todos os campos existem em ambas as tabelas, mas eu procuro uma ocorrência de um conjunto de três campos.
Meio confuso...
Com a consulta abaixo, você trará todos os registros da tabela B que não tem relação com a tabela A quando os campos Codigo, Nome e Idade possuÃrem os mesmos valores em ambas as tabelas.
SELECT B.* From A Right Join B On A.Codigo= B.Codigo And A.Nome = B.Nome And A.Idade = B.Idade where A.Codigo is null and A.Nome is null And A.Idade is null
Funcionou como era esperado?
Tópico encerrado , respostas não são mais permitidas