Requette SQL
kribac
Messages postés
148
Statut
Membre
-
mpmp93 Messages postés 7217 Date d'inscription Statut Membre Dernière intervention -
mpmp93 Messages postés 7217 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)
A voir également:
- Requette SQL
- Logiciel sql - Télécharger - Bases de données
- Sql (+) - Forum Programmation
- Sql lister les tables ✓ - Forum Programmation
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Cherche des haricot vendez les moi ✓ - Forum DS
3 réponses
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.
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+
+1 j'adhère à sa solution :D