Bonjour,
Je ne parviens pas à faire fonctionner une combinaison de jointures SQL.
J'utilise 2 LEFT OUTER JOIN sur 2 tables car les données s'y trouvant n'existent pas forcément pour les conditions que je pose dans le WHERE mais je souhaite les récupérer malgré tout.
Le problème étant que je dois faire une jointure stricte entre table1 et table2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT ... FROM ... INNER JOIN ... LEFT OUTER JOIN table1 ON (....) LEFT OUTER JOIN table2 ON (....) WHERE ...
J'ai fais ceci par exemple :
Mais les lignes que je récupère ne sont pas celles désirées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT ... FROM ... INNER JOIN ... LEFT OUTER JOIN table1 ON (....) LEFT OUTER JOIN table2 ON (table2.champ1=table1.champ1....) WHERE ...
Effectivement la jointure dans le ON n'opère pas car comme je suis dans le cadre d'un LEFT OUTER JOIN sur "table1", je récupère toujours toutes les données.
Plus sommairement (car c'est dur à expliquer), je souhaite que le LEFT OUTER JOIN sur la table2 filtre les lignes retournées après le premier LEFT OUTER JOIN.
Si je remplace le deuxième LEFT OUTER JOIN par un INNER JOIN, je ne récupère plus rien car le INNER JOIN est appliqué à l'ensemble de la requête...
How to ???
Je m'en sors pas !
Merci !
Partager