Requette SQL
kribac
Messages postés
148
Statut
Membre
-
mpmp93 Messages postés 2931 Date d'inscription Statut Membre Dernière intervention -
mpmp93 Messages postés 2931 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je vais expliquer ce que je veux
j'ai plusieur patient
chaque patient a plusieur dossier
par ex patient 01 : dossier 01
dossier 02
dossier 03
dossier 04
dossier 05
par ex patient 02 : dossier 01
dossier 02
dossier 03
par ex patient 03 : dossier 01
dossier 02
dossier 03
dossier 04
dossier 05
dossier 06
dossier 07
donc je veux avoir par une requette SQL le dernier dossier de chaque patient
c'est a dire dans ce exemple j'aurrai pour
le patient 01 : dossier 05
le patient 02 : dossier 03
le patient 03 : dossier 07
j'ai ma table dossier(codeD) et patient(codeP)
je vais expliquer ce que je veux
j'ai plusieur patient
chaque patient a plusieur dossier
par ex patient 01 : dossier 01
dossier 02
dossier 03
dossier 04
dossier 05
par ex patient 02 : dossier 01
dossier 02
dossier 03
par ex patient 03 : dossier 01
dossier 02
dossier 03
dossier 04
dossier 05
dossier 06
dossier 07
donc je veux avoir par une requette SQL le dernier dossier de chaque patient
c'est a dire dans ce exemple j'aurrai pour
le patient 01 : dossier 05
le patient 02 : dossier 03
le patient 03 : dossier 07
j'ai ma table dossier(codeD) et patient(codeP)
3 réponses
-
A vu de nez je dirais :
SELECT idPatient,MAX(idDossier) FROM dossier GROUP BY idPatient
-
Je suppose une table 'dossier' ainsi constituée:
- idDossier
- idPatient
- autres champs.
Je veux extraire le dernier dossier (idDossier le plus élevé) d'un patient 'lambda'; une réponse peut être:
"SELECT * FROM dossier WHERE idPatient=lambda ORDER BY idDossier DESC LIMIT 1"
Il ne te reste plus qu'à trouver comment faire pour obtenir ce résultat pour tous les patients...
Bonne réflexion. -
Bonsoir,
exemple pour le patient 02 : dossier 03 faire:
SELECT * num_dossier FROM dossiers WHERE patient='02' ORDER BY dossier DESC LIMIT 0,1
En clair:
- sortir numéro dossier
- pour patient numéro 2
- en triant les numéros de dossier dans l'ordre décroissant (donc dernier en premier...)
- et limité à 1 item après l'item d'ordre 0
PS: indexer les champs sur lesquels vous faites des filtrages et des tris: ici num_dossier et patient
La solution proposée ici évite de faire un regroupement. Elle est très rapide car s'arrête après extraction des données au premier résultat trouvé.
A+