|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 181 ![]() |
Bonjour à tous,
Voici mon exemple en simplifié : Table_Gauche : ID Nom 1 Dupond 2 Dubois 3 Durand 4 Martin Table_Droite (précise pour l'ID d'une personne quelle est sa ville) : ID Ville 1 Paris 2 Lyon 4 Marseille Donc ce que je voudrai c'est faire une jointure entre les 2 tables en gardant toutes les lignes de la Table_Gauche. Dans mon exemple Durand n'a pas de ville associée mais j'aimerai quand même qu'il apparaisse. Donc j'utilise ca : Code :
SELECT * FROM Table_Gauche LEFT OUTER JOIN Table_Droite ON Table_Gauche.ID = Table_Droite.ID ID Nom Ville 1 Dupond Paris 2 Dubois Lyon 3 Durand NULL Je pensais utiliser ca : Code :
SELECT * FROM Table_Gauche LEFT OUTER JOIN Table_Droite ON Table_Gauche.ID = Table_Droite.ID WHERE Table_Droite.Ville <> 'Marseille' ID Nom Ville 1 Dupond Paris 2 Dubois Lyon J'espère avoir été assez clair. Merci beacoup de votre aide. |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : novembre 2005 Messages : 181 ![]() |
Bon ben le fait de l'écrire et de le simplifier m'a aidé à trouver la solution tout seul...
Donc il suffit d'utiliser un RIGHT JOIN au lieu d'un LEFT JOIN et d'imbriquer un SELECT * FROM Table_Droite WHERE ... dans le FROM de ma jointure. |
|
|
00
|
|
|
#3 | ||
![]() ![]() |
Non votre solution me paraît fausse, il suffit de faire ainsi :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 081 ![]() |
Si j'ai bien compris la question, le résultat ne sera pas bon. Waldar, ta requête renvoie:
1 Dupond Paris 2 Dubois Lyon 3 Durand NULL 4 Martin NULL Pour que Martin soit éliminé, j'aurai plutôt vu ceci: Code SQL :
Tatayo |
||
|
|
20
|
|
|
#5 |
![]() ![]() |
Tout-à-fait Tatayo, j'avais mal compris le problème.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 13 ![]() |
Bonjour à tous
je voudrais rebondir sur ce post puisque j'ai le même type de problème qu'annoncé au dessus mais je ne trouve pas de réponse... je suis sur Mysql (je ne sais pas si cela a de l'importance) j'ai une table de voiture ID - Nom 1 - voiture 1 2 - voiture 2 3 - voiture 3 4 - voiture 4 ... et des photos ID - Nom - Profile - voiture_id 1 - photo_voiture_10 - 0 - 1 2 - photo_voiture_20 - 0 - 2 3 - photo_voiture_30 - 0 - 3 4 - photo_voiture_40 - 0 - 4 1 - photo_voiture_11 - 1 - 1 2 - photo_voiture_21 - 1 - 2 3 - photo_voiture_31 - 1 - 3 4 - photo_voiture_41 - 0 - 4 Autrement dit, chaque voiture a 2 photos, une dont le profile est égal à 1(TRUE) une autre dont le profile vaut 0 (FALSE), sauf pour la voiture 4 qui a deux "profile" égaux à 0(FALSE) Je voudrais rapatrier TOUTES MES VOITURES (quelque soit la valeur du profil de la photo) ainsi que la photo profile = 1 (si la voiture en a une) leur correspondant. je voudrais en fait ceci : ID_voiture - Nom_Photo 1 - photo_voiture_11 2 - photo_voiture_21 3 - photo_voiture_31 4 - NULL Voici ma requête actuelle : SELECT v.id, v2.nom FROM voiture v LEFT OUTER JOIN voiture_photo v2 ON v2.voiture_id = v.id WHERE v2.profile =1 OR v2.profile IS NULL LIMIT 0 , 30 Cette requête ne me rend pas la ligne pour ma voiture 4... et soit j'ai mal compris ce qui a été dit au dessus, soit j'ai un gros problème... quelqu'un pourrait m'aider???
|
|
|
00
|
|
|
#7 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour
Il faut que vous mettiez la condition dans votre jointure externe, et non dans votre filtre : Code SQL :
|
||
|
|
10
|
|
|
#8 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 13 ![]() |
MERCI pour tout ca marche impec!
je ne suis vraiment pas un grand développeur, et me donner cette solution, c'est comme me faire sortir de ma maison et me montrer tout l'univers des possibles !!! merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com