Faire 2 requetes sql en une seule

WRInaute discret
bonjour à tous,

voilà, je sais que la version de mysql installé sur mon serveur (la 5 je crois) me permet d'imbriquer les requêtes sql les une dans les autres.

La j'aimerai réaliser un requête mais je n'arrive pas à la mettre en forme, je vous explique :

j'ai une table1 qui contient un champ email, et une table2 qui contient un champ email2. J'aimerai faire une requête sql qui sélectionne ceux présents dans la table1 mais absent de la table2.
Je ne sais pas du tout comment m'y prendre :( j’attends votre aide avec impatience!

merci d'avance

doom
 
WRInaute discret
finstreet> c'est toi qui te gourres là :)

Code:
SELECT `table1`.`email` FROM `table1` WHERE `table1`.`email` NOT IN (SELECT `table2`.`email2` FROM `table2`)
 
WRInaute discret
Tu peux aussi, simpliement, remplacer tes tables par des SELECT, je m'explique :

Code:
SELECT *
FROM(
     SELECT
email as mail1 from table1
WHERE
'ta condition'
) A INNER JOIN(
     SELECT
email as mail2 from table2
WHERE
'ta condition'
) B
ON A.id= B.id

@+
 
WRInaute discret
petit-ourson> les join sont très utiles quand il s'agit de trouver des analogies entre des tables, pas tellement quand on veut trouver des différences (on peut toujours le faire avec des join, mais c'est plus du bricolage alors qu'il existe les requêtes imbriquées)

jexl> ta solution, bien que plaisante et compliquée à souhait, ne fait pas ce que demande l'auteur du post initial :)
 
WRInaute accro
Bh@Mp0 a dit:
petit-ourson> les join sont très utiles quand il s'agit de trouver des analogies entre des tables, pas tellement quand on veut trouver des différences (on peut toujours le faire avec des join, mais c'est plus du bricolage alors qu'il existe les requêtes imbriquées)

Et au niveau des performances ? ce sera pas le bricolage le + rapide ? :)
 
WRInaute discret
Bh@Mp0 -> a oui effectivement, j'avais pas lu jusqu'au bout. :D

Alors voila ce qui pourrait aussi marcher :


Code:
SELECT     DISTINCT mail
		FROM
		table1 A LEFT OUTER JOIN
		  (SELECT DISTINCT mail 
			FROM          table2
			WHERE ) B ON A.id= b.id
		WHERE  (B.mail IS NULL)

Ca devrait marcher
 
WRInaute impliqué
finstreet a dit:
Bh@Mp0 a dit:
petit-ourson> les join sont très utiles quand il s'agit de trouver des analogies entre des tables, pas tellement quand on veut trouver des différences (on peut toujours le faire avec des join, mais c'est plus du bricolage alors qu'il existe les requêtes imbriquées)

Et au niveau des performances ? ce sera pas le bricolage le + rapide ? :)

Je pense que cela dépend de la structure de la table (index?) mais un explain devrait notifier ces performances
 
Discussions similaires
Haut