Salut à tous,
Voilà, j’ai encore un petit problème sur une requête, ou j’ai un détail qui m’échappe !
J’ai une base mysql avec une table nommée ultrastar qui contient les données suivantes (échantillon):
Chanson niveau joueur score date
Creep 0 AAA 9680 09-07-2008
Creep 0 BBB 9670 12-07-2008
Come As You Are 0 BBB 9640 12-07-2008
Imagine 0 CCC 9360 12-07-2008
With or without you 0 AAA 9360 14-07-2008
The Show Must Go On 0 AAA 9260 09-07-2008
Creep 0 BBB 9250 12-07-2008
Come As You Are 1 BBB 9220 12-07-2008
Come As You Are 0 CCC 9200 14-07-2008
With or without you 0 BBB 9200 12-07-2008
Come As You Are 0 AAA 9160 09-07-2008
Where did you sleep last night 0 BBB 9160 12-07-2008
Creep 0 AAA 9030 12-07-2008
La requete que je souhaite faire est la suivante : je veux prendre le meilleur score de chaque joueur pour chaque chanson pour chaque niveau.
Donc en gros, je ne veux pas me soucier de l’information « date du score », cependant, je souhaite malgré tout qu’elle apparaisse dans le résultat final.
J’ai donc écrit qqchose comme ça :
'SELECT chanson, niveau, joueur as player, max(score) as best, date from ultrastar GROUP BY joueur, niveau, chanson ORDER BY '.$sort.' '.$sens;
Problème : il m’affiche bien les lignes souhaitées, mais la valeur pour la colonne « date » n’est pas la bonne, par exemple il va me sortir un truc du style :
Creep 0 AAA 9680 12-07-2008
au lieu de :
Creep 0 AAA 9680 09-07-2008
Il me sort donc bien la liste des meilleurs scores par joueur par chanson, mais il n’affiche pas forcément la bonne date en face…
J’ai essayé d’ajouter « date » au GROUP BY, mais là du coup il me ressort toutes les lignes de la table (sans tenir le max(score) donc).
Comme m’en sortir ?
Merci de votre aide, par avance !
Edité le 16/07/2008 à 15:55