PaliSkill
← SQL Intermédiaire

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 par GROUP 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 l'attestation finale.

7 500 XOF / 11,43 € / 12,46 $

Débloquez les 87 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.