8791 sujets

Développement web côté serveur, CMS

Bonjour,

je suis en train de me prendre la tête avec une requête mysql et pourtant ça doit être tout simple.
Je vous explique :
Table:Highscore
champ: Pseudo (VarChar)
champ: Date (DateTime)
champ: Score (int)

niveau donnée on a tout les scores qu'on fait chaque personne.
et je voudrais faire une requête qui me montre le dernier score (pas le meilleur!) pour chaque nom.
Une même personne a pu faire plusieur score (chaque score est gardé) mais je ne voir que le dernier

j'avais pensé a :
Select *
From Highscore
group by Pseudo
order by Pseudo,Date


Mais ça ne marche pas quelqu'un a une idée ?

Merci d'avance
Modifié par thyphoon (18 Apr 2008 - 22:02)
Limit 1 et un order sur le date en desc.

encore que j'ai entendu ce jour d'autres personnes dire impossible de faire le limit 1 couplé avec un group by. en tous cas le limit te retournera que 1 valeur et non une par personne.

donc moralité passer par php ou des requetes imbriquer et boucler ( ou IN-er ) sur une liste de pseudo de personne obtenu avec un distinct et faire la requete toute bete


Select *
From Highscore
where pseudo=$pseudo
order by Pseudo,Date
Limit 1 

Modifié par CPascal (18 Apr 2008 - 20:31)
Merci CPascal de t'être penché sur mon problème je crois que j'ai trouvé la solution.
Lorsque tu m'as parlé de requête imbriqué...

Select
pseudo,
date,
score
From Highscore
where
date=(select max(date) from  Highscore as h where h.pseudo=Highscore.pseudo)
order by date desc,pseudo

Et là ça marche parfaitement ...

Un grand merci, car même si tu ne m'a pas donné la solution tu m'a donné l'idée Smiley biggrin
comme quoi Smiley langue
Modifié par thyphoon (18 Apr 2008 - 22:01)