Requête MAX sur MySQL

Requête MAX sur MySQL - SQL/NoSQL - Programmation

Marsh Posté le 12-04-2007 à 14:12:39    

J'ai un problème qui devrait pourtant être simplissime, mais que je n'arrive pas à résoudre:
 
Une table Etats dans une base de données MySQL contient des états d'avancement de dossiers. Globalement, la structure de la table est la suivante:
 
Etat (idEtat, idDossier, dateAvancement, etatAvancement)
 
Comment peut-on avoir pour chaque dossier le dernier état d'avancement?
 
J'ai essayé

Code :
  1. select idDossier, max(dateAvancement), etatAvancement group by idDossier

mais s'il me renvoie bien la dernière date d'avancement, il ne me donne pas l'étatAvancement correspondant.
 
Quelqu'un a une idée, parce que là je sèche. :sweat:

Reply

Marsh Posté le 12-04-2007 à 14:12:39   

Reply

Marsh Posté le 12-04-2007 à 14:17:40    

c pas aussi simple.
 
y'a plusieurs requêtes possible.
 

Code :
  1. SELECT e1.idetat, e1.iddossier, e1.dateacancement, e1.etatacancement
  2. FROM etats e1
  3. WHERE e1.dateavancement = (SELECT max(e2.dateavancement) FROM etats e2 WHERE e2.iddossier = e1.iddossier)

Reply

Marsh Posté le 12-04-2007 à 14:23:45    

Effectivement, ta requête fonctionne, merci. :jap:
Par contre, s'il y a beaucoup de lignes, ça cause pas un souci de rapidité?

Reply

Marsh Posté le 12-04-2007 à 14:34:30    

normalement, non, l'optimiser doit s'arranger pour ne pas multiplier les sous-requêtes


Message édité par MagicBuzz le 12-04-2007 à 14:34:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed