Estou pesquisando isso no Google há algum tempo, mas não encontrei solução. OK, tenho 2 tabelas que se parecem com esta: Tabela "main":
e-mail do cliente | nome_do_cliente |
---|---|
[email protegido] | Peter Pan |
[email protegido] | Paulo Smith |
Tabela "registrada":
e-mail do cliente | nome_do_cliente |
---|---|
[email protegido] | James Bond |
[email protegido] | Paulo Smith |
Agora, alguns clientes da tabela "main" estarão na tabela "registered", mas não todos eles. Também pode haver alguns clientes que estão na tabela "registered", mas não na tabela "main". E, por último, o mesmo cliente (e-mail) pode estar várias vezes na tabela main, mas apenas uma vez na tabela registered.
Agora o que eu quero fazer é uma consulta que me encontre todos os e-mails ÚNICOS de ambas as tabelas e os nomes correspondentes (não importa de qual tabela). Eu tentei:
SELECT client_email,client_name
FROM `main`
UNION
SELECT client_email,client_name
FROM `registered`
ORDER BY client_email ASC;
mas isso gerou e-mails duplicados, pois não procura apenas e-mails exclusivos, mas entradas em que AMBOS o e-mail e o nome do cliente são exclusivos. Então, ter o nome do cliente escrito de forma ligeiramente diferente em uma entrada (por exemplo, com um hífen ou acento, etc.) resultará na coleta desse e-mail mais de uma vez. Posso fazê-lo funcionar em uma única tabela usando GROUP BY(client_email), mas não consigo descobrir como coletar todos os e-mails exclusivos de 2 ou mais tabelas.
Resultado desejado. Com base nos dados de exemplo acima, eu gostaria do seguinte resultado da consulta:
| client_email | client_name |
| ------------ | -------------- |
| [email protected]| Peter Pan |
| [email protected]| James Bond |
| [email protected] | Paul Smith |