Leçon 3 / 9 — Chapitre 9: Mise en pratique : clinique
Sous-requête corrélée : la dernière consultation de chaque patient
Comme au chapitre 3, une sous-requête corrélée peut isoler, pour chaque patient, sa consultation la plus récente — ici approximée par l'id le plus élevé, puisque les identifiants sont attribués dans l'ordre de création, sans colonne de date à ce stade.
SELECT c.patient_id, c.id, c.montant
FROM consultations c
WHERE c.id = (
SELECT MAX(c2.id) FROM consultations c2 WHERE c2.patient_id = c.patient_id
);
Pour chaque patient, la sous-requête recalcule le plus grand id parmi ses propres consultations (c2.patient_id = c.patient_id, la corrélation). Amina (patient 1) a les consultations 1 et 2 : seule la 2 (la plus récente) est gardée. Idris (patient 2) n'a que la 3. Farida (patient 3) a 4 et 5 : seule la 5 est gardée. Malick (patient 4) n'a que la 6.
Résultat final : 4 lignes — les consultations 2, 3, 5 et 6.
À retenir :
- Une sous-requête corrélée sur
MAX(id)par groupe (ici, par patient) isole la ligne la plus récente de chaque groupe, sans passer parGROUP BY. - Un patient sans aucune consultation (Nour) n'apparaît jamais dans ce résultat : la table de départ (
consultations) ne contient tout simplement aucune ligne pour lui.
À vous de jouer : quelle consultation ce résultat garde-t-il pour Farida (patient 3), entre la 4 et la 5 ?
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 80 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès