2010-06-26 7 views
0

Je compare deux listes d'adresses email dans mysql-listA et listB (qui sont toutes deux des vues). À l'origine, je voulais trouver toutes les adresses e-mail dans la liste A qui ne sont pas dans la listeB. J'ai accompli avec succès qu'avec:Problème de comparaison de liste mysql avec la logique de requête

$comparison_query = mysql_query("SELECT DISTINCT email_addresses FROM listA WHERE email_addresses NOT IN (SELECT DISTINCT email_addresses FROM listB) ORDER BY email_addresses"); 

Maintenant, je veux trouver toutes les adresses e-mail listA qui ne sont pas listeB OU une table d'exception. J'ai essayé de faire ceci avec:

$comparison_query = mysql_query("SELECT email_addresses FROM listA WHERE email_addresses NOT IN (SELECT DISTINCT email_addresses FROM ((SELECT email_addresses FROM listB) UNION (SELECT email_addresses FROM exception))) ORDER BY email_addresses"); 

Cependant, ceci ne fonctionne pas. Quelqu'un peut-il voir où je vais mal?

Merci!

Répondre

1

USE AND au lieu de UNION

mysql_query("SELECT email_addresses FROM listA 
     WHERE email_addresses NOT IN 
     (SELECT DISTINCT email_addresses FROM listB) AND 
     email_addresses NOT IN 
     (SELECT DISTINCT email_addresses FROM exception)) 
     ORDER BY email_addresses"); 
+0

qui a fait l'affaire pour moi, merci pour votre aide! – littleK

1

Je pense que quelque chose comme ça devrait faire l'affaire:

SELECT email_addresses FROM listA 
WHERE email_addresses NOT IN 
(SELECT DISTINCT email_addresses FROM FROM listB) 
AND email_addresses NOT IN 
(SELECT email_addresses FROM exception);