[Résolu]Problème de requête SELECT

Problème de requête SELECT [Résolu] - SQL/NoSQL - Programmation

Marsh Posté le 16-07-2008 à 14:10:49    

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):

Code :
  1. Chanson    niveau  joueur score date
  2. Creep    0  AAA 9680 09-07-2008
  3. Creep    0  BBB  9670 12-07-2008
  4. Come As You Are   0  BBB  9640 12-07-2008
  5. Imagine    0  CCC  9360 12-07-2008
  6. With or without you   0  AAA  9360 14-07-2008
  7. The Show Must Go On  0  AAA  9260 09-07-2008
  8. Creep     0  BBB  9250 12-07-2008
  9. Come As You Are   1  BBB  9220 12-07-2008
  10. Come As You Are   0  CCC  9200 14-07-2008
  11. With or without you   0  BBB  9200 12-07-2008
  12. Come As You Are   0  AAA  9160 09-07-2008
  13. Where did you sleep last night 0  BBB  9160 12-07-2008
  14. 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 :

Code :
  1. '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 <B>12-07-2008</B>
au lieu de :
Creep    0  AAA 9680 <B>09-07-2008</B>
 
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 !


Message édité par totof74 le 16-07-2008 à 16:51:18
Reply

Marsh Posté le 16-07-2008 à 14:10:49   

Reply

Marsh Posté le 16-07-2008 à 14:50:13    

problème déjà abordé 72fois :o

Code :
  1. SELECT
  2.  U1.chanson,
  3.  U1.niveau,
  4.  U1.joueur AS player,
  5.  U1.score AS best,
  6.  date
  7. FROM
  8.  ultrastar U1
  9. WHERE
  10. EXISTS (  
  11.  SELECT
  12.    U2.chanson,
  13.    U2.niveau,
  14.    U2.joueur,
  15.    max(U2.score)
  16.  FROM
  17.    ultrastar U2
  18.  WHERE    
  19.    U2.chanson = U1.chanson
  20.    AND U2.niveau = U1.niveau
  21.    AND U2.joueur = U1.joueur
  22.  GROUP BY
  23.    U2.chanson,
  24.    U2.niveau,
  25.    U2.joueur
  26.  HAVING max(U2.score) = U1.score
  27. )
  28. ORDER BY ...


aux erreurs de syntaxe près.


Message édité par anapajari le 16-07-2008 à 14:51:39

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 16-07-2008 à 15:01:08    

Salut anapajari et merci de ton aide, malgré ton 'ton' peu avenant...
 
Je précise, que je ne suis pas débutant en informatique, et que je fais toujours moult recherches avant de poster quoi que ce soit !
 
Ca me gonfle autant de passer 15mn à rédiger une question bien écrite pour un truc que je pourrais trouver en 5mn sur le web que toi de lire ma prose (visiblement)... Donc je ne viens sur les forums qu'en dernier recours.
 
Le problème avec ce genre de truc c'est qu'on sait pas "quoi" chercher exactement pour tomber sur la bonne info qui va débloquer le biniou. J'ai beau lire les clauses des SELECT... ben t'avoueras quand même que la ce n'est pas une requête des plus simples (du moins au vue de ta réponse), en fait, c'est même plus compliqué que ce que je m'étais imaginé ! J'étais très loin du résultat.
 
Bon cela dit, je te remercies beaucoup d'avoir pris le temps de lire et d'avoir répondu :)
 

Reply

Marsh Posté le 16-07-2008 à 15:54:43    

désolé pour mon 'ton' mais la question du dé-"doublonnement" d'une table j'ai l'impression d'y avoir répondu 72 fois sur ce forum [:spamafote]


Message édité par anapajari le 16-07-2008 à 15:54:51

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 16-07-2008 à 16:03:00    

J'ai bien compris, et je ne doute pas que tu as effectivement dû répondre pleins de fois à la question, mais ce que je veux dire et je pense que tu l'as compris, c'est que justement, je ne savais pas sur quel mot faire ma recherche sur le web.
 
Maintenant, je le sais : c'est "dédoublonnement", sur que si j'avais réussi à formuler ce mot, j'aurais fini par trouver par moi-même et je ne serais pas venu vous embêter ;)
 
Merci encore de ton aide  :jap:


Message édité par totof74 le 16-07-2008 à 16:03:20
Reply

Sujets relatifs:

Leave a Replay

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