Testando duas tabelas e pegando apenas resultado que contem em uma que não contem na outra
Boa noite galera, estou fazendo um teste e fiz um select na tabela CLIENTES, após fiz uma cópia (completa até cabeçalho) dessas informações e coloquei
tudo no Excel e a partir dele (Excel) criei uma tabela com o nome CLIENTESX no meu banco (importei a tabela).
depois fiz um insert na tabela CLIENTES com um usuário diferente do que tem no CLIENTESX
(MESA DE TESTE ORGANIZADA, AGORA, VAMOS AO TESTE)
fiz o seguinte select:
select *
from CLIENTES a
left join CLIENTESX b on a.IdCliente = b.IdCliente
where a.NomeCliente <> b.NomeCliente
resultado: só tive o nome das colunas.
Intenção: achar só o usuário que não existe na tabela CLIENTESX
Alguém poderia me dá uma força? Muito obrigado
tudo no Excel e a partir dele (Excel) criei uma tabela com o nome CLIENTESX no meu banco (importei a tabela).
depois fiz um insert na tabela CLIENTES com um usuário diferente do que tem no CLIENTESX
(MESA DE TESTE ORGANIZADA, AGORA, VAMOS AO TESTE)
fiz o seguinte select:
select *
from CLIENTES a
left join CLIENTESX b on a.IdCliente = b.IdCliente
where a.NomeCliente <> b.NomeCliente
resultado: só tive o nome das colunas.
Intenção: achar só o usuário que não existe na tabela CLIENTESX
Alguém poderia me dá uma força? Muito obrigado
Demetrio Lopes
Curtidas 0
Melhor post
Emerson Nascimento
04/07/2018
select a.* from CLIENTES a left join CLIENTESX b on b.IdCliente = a.IdCliente where b.NomeCliente is null
GOSTEI 1
Mais Respostas
Fernando C
03/07/2018
tente sem o "where".
GOSTEI 0
Demetrio Lopes
03/07/2018
como assim?
GOSTEI 0
Luiz Santos
03/07/2018
Bom dia Demetrio.
Quando você usa um LEFT JOIN você está dizendo para listar todos os dados da tabela a, mesmo que não exista a contrapartida na tabela b.
Nesse caso, quando ele trouxer o registro "novo" que você cadastrou em a, para b ele vai ser nulo.
Quando trabalhamos com campos nulo, não conseguimos usar campo da tabela a <> de campo da tabela b.
Você precisa usar no where campo da tabela b IS NULL.
Existem outras formas de trazer esse dado, usando o NOT IN ou NOT EXISTS.
Faça o teste e avisa se deu certo.
Grande abraço
Quando você usa um LEFT JOIN você está dizendo para listar todos os dados da tabela a, mesmo que não exista a contrapartida na tabela b.
Nesse caso, quando ele trouxer o registro "novo" que você cadastrou em a, para b ele vai ser nulo.
Quando trabalhamos com campos nulo, não conseguimos usar campo da tabela a <> de campo da tabela b.
Você precisa usar no where campo da tabela b IS NULL.
Existem outras formas de trazer esse dado, usando o NOT IN ou NOT EXISTS.
Faça o teste e avisa se deu certo.
Grande abraço
GOSTEI 1
Demetrio Lopes
03/07/2018
pow que aula, valeu mesmo mano, deu certo, muito obrigado Luiz Fernando
GOSTEI 0
Demetrio Lopes
03/07/2018
Emerson: obrigado cara, deu certo!! valeu mesmo
GOSTEI 0