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.

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 ...
Le problème étant que je dois faire une jointure stricte entre table1 et table2.
J'ai fais ceci par exemple :

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 ...
Mais les lignes que je récupère ne sont pas celles désirées.
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 !