Requette SQL

kribac Messages postés 148 Statut Membre -  
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)

3 réponses

  1. Leviathan49 Messages postés 267 Statut Membre 70
     
    A vu de nez je dirais :
    SELECT idPatient,MAX(idDossier) FROM dossier GROUP BY idPatient
    1
    1. skymax406 Messages postés 242 Statut Membre 24
       
      A vu de nez hein ? :D
      +1 j'adhère à sa solution :D
      0
  2. loupius Messages postés 789 Statut Membre 148
     
    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.
    0
  3. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    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+
    0