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