Problemme de requete MySql

  • Auteur de la discussion Auteur de la discussion p3kk4
  • Date de début Date de début
Nouveau WRInaute
Salut,
Voici qq enregistrement

...
ROUCAS Jean 17/02/1982
ROUCAS Jean 19/02/1985
ROUCAS Jean 19/03/1985
POPOL Luc 18/05/1998
POPOL Luc 18/05/1999
...
Voici le résultat d une requete groupé(GROUP BY) par nom et trié(ORDER BY) par date mais je voudrais que le premier resultat de chaque groupe cad : ici,ROUCAS Jean 17/02/1982 et POPOL Luc 18/05/1998.
Comment faire en SQL?

Merci.
 
WRInaute passionné
je suppose qu'il veut la date....

un truc de ce genre ne te suffit pas :
Code:
select nom, prenom, max(date) as max_date
from tatable
group by nom, prenom
order by nom, prenom;

?
 
WRInaute passionné
si tu disais ce que tu veux, ce serait plus simple... parce que ce que je t'ai donné, ça colle parfaitement à ce que j'avais cru comprendre de ton problème.

De même quand tu dis que ça ne "marchent pas", précise en quoi cela ne marche pas, sinon on va pas avancer...
 
Nouveau WRInaute
Oh, on ne s enerve pas svp!... :o

SELECT Nom, Prenom, DateArriveeLabo
FROM PersonneHisto
WHERE ( DateArriveeLabo <= '2004-08-11' AND DateDepartLabo >= '2004-08-11' )
GROUP BY Nom
ORDER BY DateHisto DESC

Résultat
...
ROUCAS Jean 19/03/1985
POPOL Luc 18/05/1999
...

Et ce meme en changeant DESC par ASC. En fait il faudrait trié le GROUP BY.
 
WRInaute passionné
perso j'avais marqué ça :
SELECT Nom, Prenom, MAX(DateArriveeLabo) as max_date
FROM PersonneHisto
WHERE ( DateArriveeLabo <= '2004-08-11' AND DateDepartLabo >= '2004-08-11' )
GROUP BY Nom, Prenom
ORDER BY Nom, Prenom DESC

Après ton ORDER BY, tu le fais comme tu le sens.
 
WRInaute passionné
PS : d'ailleurs si tu veux la date la plus ancienne au lieu de la plus récente, utilise MIN() au lieu de MAX()...

PS 2 : tout ça est bien entendu expliqué en détail dans la doc officielle, et en français ;)
 
Nouveau WRInaute
Il faudrait que je récupère la ligne correspondante à la date la plus elevé.
Actuellement Il me prend la ligne avec la plus petite date et il m affiche cette ligne avec le max de la date.
 
WRInaute passionné
je suis désolé, mais je comprends jamais rien dans tes explications :s

Il me prend la ligne avec la plus petite date et il m affiche cette ligne avec le max de la date.

il te prend la plus petite ou la plus grande ??? :|

Essaye de donner des exemples de ce qui est dans la base, de ce que tu veux en résultat, et de ce que la requete te sort actuellement...
 
Nouveau WRInaute
...
ROUCAS Jean 17/02/1982 Fils1
ROUCAS Jean 19/02/1985 Fils1 Fils2
ROUCAS Jean 19/03/1986 Fils1 Fils2 Fils3
POPOL Luc 18/05/1998 Fils1
POPOL Luc 18/05/1999 Fils1 Fils2
...

Ce que je voudrais :
ROUCAS Jean 19/03/1986 Fils1 Fils2 Fils3
POPOL Luc 18/05/1999 Fils1 Fils2

Ce que j ai actuellement :

ROUCAS Jean 19/03/1986 Fils1
POPOL Luc 18/05/1999 Fils1

Voila!
 
WRInaute passionné
ah bah voilà... donc le problème n'est pas sur la date, mais sur les autres champs.

Donc avec MySQL 4.1.x il te "suffit" de faire un select imbriqué. Avec les autres versions c'est un peu plus sport, et frole plutot la bidouille, comme indiqué dans la doc.
 
Nouveau WRInaute
Ok merci.
Mais malheureusement j ai une "vieille" version (4.0 :lol: )
Donc ca va etre dur. Tu connaitrai pas une autre solution?
 
WRInaute passionné
Bah si, c'est ce qui est indiqué dans la page que je t'ai donné. Tout est expliqué, et en français.
 
Discussions similaires
Haut