Bonsoir,
J'ai dans mon travail, régulièrement besoin de rédiger des requêtes, et j'ai souvent besoin d'utiliser des LEFT OUTER JOIN, et lorsque je dois en mettre en place sur plusieurs tables, je me pose toujours la question de comment je dois rédiger ma requête. Je vais pour le moment vous montrer deux images qui traduisent deux cas:
Cas 1:
Ici, les tables B et C ont pour clé primaire une clé de A. Je souhaite récupérer une ligne pour chaque valeur de A même si la table de B et C ne renvoie rien, donc LEFT OUTER JOIN.
C'est pourquoi je ferais ma jointure de la manière suivante.
Quand je vois un truc pareille, je lis ça de la manière suivante, A LEFT OUTER JOIN B et A LEFT OUTER JOIN C, car la table A est dans le FROM. Je ne sais pas si je fais de bien de voir cela comme ça, le fait est que du coup je ne vois comment rédiger ma requête si je suis dans le cas 2...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT ... FROM A LEFT OUTER JOIN B ON A. ... = B. ... LEFT OUTER JOIN C ON A. ... = C. ...
Cas 2:
Dans ce cas pareille, je souhaite récupérer une ligne pour chaque valeur dans A même si B ne renvoie rien, et de même récupérer une ligne pour chaque valeur dans B même si C ne renvoie rien. Je fais donc deux LEFT OUTER JOIN, la où ça coince, c'est que je ne vois pas comment gérer ce cas.
En faite je crois que ce qui me pose notamment problème, c'est que dans un LEFT OUTER JOIN on prends une ligne pour chaque valeur de la table à gauche, mais à quoi correspond la table de gauche? Celle qu'on a mis au début dans le FROM (comme dans mon code du cas 1?), ou la table de gauche dans le ON?
Je m'excuse par avance si je n'emploie pas les thermes exactes, si je fais des raccourcis et si je n'ai pas été clair. Je suis loin d'avoir une grande expertise en SQL mais je ne demande qu'à apprendre et qu'on me reprenne partout ou j'ai pu me tromper !
Merci d'avance
Partager