|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
doom WRInaute occasionnel

Inscrit le: 21 Déc 2003 Messages: 155
|
Posté le : Lun Déc 18, 2006 14:44 Sujet du message: Faire 2 requetes sql en une seule |
|
|
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 |
|
| |
|
 |
finstreet WRInaute accro

Inscrit le: 10 Juil 2005 Messages: 9871
|
Posté le : Lun Déc 18, 2006 14:46 Sujet du message: Faire 2 requetes sql en une seule |
|
|
| c pas de la requete imbriquée... regarde du coté du LEFT JOIN |
|
| |
|
 |
Bh@Mp0 WRInaute occasionnel

Inscrit le: 18 Jan 2005 Messages: 245
|
Posté le : Lun Déc 18, 2006 14:53 Sujet du message: Faire 2 requetes sql en une seule |
|
|
finstreet> c'est toi qui te gourres là
| Code: |
| SELECT `table1`.`email` FROM `table1` WHERE `table1`.`email` NOT IN (SELECT `table2`.`email2` FROM `table2`) |
|
|
| |
|
 |
petit-ourson WRInaute passionné

Inscrit le: 31 Mai 2004 Messages: 795 Localisation: Paris
|
Posté le : Lun Déc 18, 2006 14:58 Sujet du message: Faire 2 requetes sql en une seule |
|
|
| Bh@Mp0 a écrit: |
| finstreet> c'est toi qui te gourres là :) |
On peut aussi le faire avec dur RIGHT JOIN ou du LEFT JOIN. |
|
| |
|
 |
jexl WRInaute occasionnel

Inscrit le: 23 Juin 2005 Messages: 203
|
Posté le : Lun Déc 18, 2006 15:00 Sujet du message: Faire 2 requetes sql en une seule |
|
|
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 |
@+ |
|
| |
|
 |
Bh@Mp0 WRInaute occasionnel

Inscrit le: 18 Jan 2005 Messages: 245
|
Posté le : Lun Déc 18, 2006 15:14 Sujet du message: Faire 2 requetes sql en une seule |
|
|
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  |
|
| |
|
 |
finstreet WRInaute accro

Inscrit le: 10 Juil 2005 Messages: 9871
|
Posté le : Lun Déc 18, 2006 15:23 Sujet du message: Faire 2 requetes sql en une seule |
|
|
| Bh@Mp0 a écrit: |
| 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 ?  |
|
| |
|
 |
jexl WRInaute occasionnel

Inscrit le: 23 Juin 2005 Messages: 203
|
Posté le : Mar Déc 19, 2006 10:18 Sujet du message: Faire 2 requetes sql en une seule |
|
|
Bh@Mp0 -> a oui effectivement, j'avais pas lu jusqu'au bout.
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 |
|
| |
|
 |
narayana WRInaute passionné

Inscrit le: 28 Jan 2005 Messages: 831 Localisation: paris
|
Posté le : Mar Déc 19, 2006 10:33 Sujet du message: Faire 2 requetes sql en une seule |
|
|
| finstreet a écrit: |
| Bh@Mp0 a écrit: |
| 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 |
|
| |
|
 |
| |
|
|