Bonjour !
Arghl ! Encore une galère de jointures...
Donc voilà, j'ai deux tables.
La première PATHOSLIST donne le nom de pathologies :
ID | INTITULE
1 | Maux de tête
2 | Douleur musculaire
La seconde, OBSPATHOS, relie des observations entre elles :
ID | IDPATHOS | IDOBS | IDPATIENT
161| 2 | 60 | 33
162| 2 | 59 | 33
163| 1 | 60 | 33
J'essaie de générer:
- la liste de toutes les pathologies
- Ensuite, pour chaque pathologie et pour un couple idpatient/idobs donné, si cette pathologie est référencée (information ou null)
Ceci me permettra de générer une liste de cases à cocher, et de les cocher si la pathologie est référencée pour l'observation donnée.
J'ai donc besoin de générer un résultat du type suivant, par exemple pour idobs=59 et idpatient=33 :
PATHOSLIST.ID | INTITULE | OBSPATHOS.ID | IDPATHOS | IDOBS | IDPATIENT
1| Maux de tête | null | null | null | null
2 | Douleur musculaire | 162 | 2 | 59 | 33
Voici ma requête :
Je n'obtiens que la seconde ligne des résultats escomptés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT pathoslist.id AS pathoslistid, intitule, obspathos.id AS obspathosid, idpathos, idobs, idpatient FROM pathoslist LEFT JOIN obspathos ON pathoslist.id=obspathos.idpathos WHERE (idobs='59' AND idpatient='33') OR (idobs IS NULL AND idpatient IS NULL) ORDER BY intitule
En effet, si l'on exclut la sélection par WHERE, pour afficher tous les résultats de la jointure, les maux de tête ne sont pas NULL, puisque existant à l'enregistrement 163.
En appliquant ma sélection par WHERE, je n'obtiens plus que le résultat 161, et je perds le résultat souhaité des maux de tête non observés chez ce patient (NULL)
Que de maux de tête...
Auriez-vous une petite suggestion pour moi ?
En vous remerciant....
Partager