Bonjour

J'ai deux requêtes différentes (l'une a un INNER JOIN, l'autre un LEFT OUTER JOIN) qui renvoient le même résultat:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT * FROM PROJECTS
    LEFT OUTER JOIN (STUDIES
        LEFT OUTER JOIN (STATUS) ON STATUS.STATUS_ID = STUDIES.STATUS_ID AND STATUS.NAME = 'Open'
) ON STUDIES.PROJECT_ID = PROJECTS.PROJECT_ID
&

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT * FROM PROJECTS
    LEFT OUTER JOIN (STUDIES
        INNER JOIN (STATUS) ON STATUS.STATUS_ID = STUDIES.STATUS_ID AND STATUS.NAME = 'Open'
) ON STUDIES.PROJECT_ID = PROJECTS.PROJECT_ID
Je dispose de 3 tables avec chacune une ligne.
Les données sont "liées" correctement.
Dans la table STATUS: NAME='close'

La première requête fait ce que j'attends d'elle, c'est à dire retourne les informations relatives a project et study. Celles relatives à status son null car elles ne correspondent pas.

La deuxième fait exactement la même chose ; cependant, j'ai mis un INNER JOIN entre STATUS et STUDIES, par conséquence j'attends en résultat aucune study (sachant qu'il n'y a pas de status correspondant), mais simplement les données de la table PROJECT.

Visiblement j'ai fait une erreur, mais je ne vois pas où.

Merci par avance pour toute aide :-)

remarque: je travaille avec mysql.