Requette SQL
Fermé
kribac
Messages postés
105
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
28 avril 2016
-
14 juin 2011 à 22:12
mpmp93 Messages postés 6651 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 15 juin 2011 à 21:46
mpmp93 Messages postés 6651 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 15 juin 2011 à 21:46
3 réponses
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Modifié par Leviathan49 le 15/06/2011 à 08:33
Modifié par Leviathan49 le 15/06/2011 à 08:33
A vu de nez je dirais :
SELECT idPatient,MAX(idDossier) FROM dossier GROUP BY idPatient
loupius
Messages postés
697
Date d'inscription
dimanche 1 novembre 2009
Statut
Membre
Dernière intervention
31 décembre 2017
148
15 juin 2011 à 00:16
15 juin 2011 à 00:16
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.
- 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.
mpmp93
Messages postés
6651
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 331
Modifié par mpmp93 le 15/06/2011 à 21:58
Modifié par mpmp93 le 15/06/2011 à 21:58
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+
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+
15 juin 2011 à 09:30
+1 j'adhère à sa solution :D