Faire 2 requetes sql en une seule

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

doom
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 155
Inscription: Dim Déc 21, 2003 19:37

Faire 2 requetes sql en une seule

Message le Lun Déc 18, 2006 14:44

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
WRInaute accro
 
Messages: 10468
Inscription: Dim Juil 10, 2005 12:39

Message le Lun Déc 18, 2006 14:46

c pas de la requete imbriquée... regarde du coté du LEFT JOIN


Bh@Mp0
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 245
Inscription: Mar Jan 18, 2005 19:02

Message le Lun Déc 18, 2006 14:53

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

Code: Tout sélectionner
SELECT `table1`.`email` FROM `table1` WHERE `table1`.`email` NOT IN (SELECT `table2`.`email2` FROM `table2`)

petit-ourson
WRInaute passionné
WRInaute passionné
 
Messages: 844
Inscription: Lun Mai 31, 2004 15:19

Message le Lun Déc 18, 2006 14:58

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
WRInaute occasionnel
 
Messages: 224
Inscription: Jeu Juin 23, 2005 12:07

Message le Lun Déc 18, 2006 15:00

Tu peux aussi, simpliement, remplacer tes tables par des SELECT, je m'explique :

Code: Tout sélectionner
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
WRInaute occasionnel
 
Messages: 245
Inscription: Mar Jan 18, 2005 19:02

Message le Lun Déc 18, 2006 15:14

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
WRInaute accro
 
Messages: 10468
Inscription: Dim Juil 10, 2005 12:39

Message le Lun Déc 18, 2006 15:23

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
WRInaute occasionnel
 
Messages: 224
Inscription: Jeu Juin 23, 2005 12:07

Message le Mar Déc 19, 2006 10:18

Bh@Mp0 -> a oui effectivement, j'avais pas lu jusqu'au bout. :D

Alors voila ce qui pourrait aussi marcher :


Code: Tout sélectionner
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é
WRInaute passionné
 
Messages: 835
Inscription: Ven Jan 28, 2005 12:53

Message le Mar Déc 19, 2006 10:33

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


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités