Histoire de scores

Signaler
Messages postés
116
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
13 février 2008
-
Messages postés
116
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
13 février 2008
-
Bonjour tout le monde, j'ai un soucis assez particulier mais je pense qu'il doit y avoir une solution.

J'ai ma table 'score' avec les champs :

ID, membre, score, time

A chaque fois que le membre en question fait un score ça ajoute une ligne,
donc un même membre peut avoir plusieurs lignes à lui qui représentent son nombre d'essais.

Ce que je veux c'est récuperer à la sortie de ma requête, la liste suivante:

membre, score maxi, time correspondant au score maxi, nombre d'essais du membre

Sachant que ces éléments doivent être classés par scores maxi descendant et limité à 20 éléments. Le gros problème dans l'histoire c'est d'arriver conserver le time qui correspond au score maxi avec une seule requête !

par exemple :

"SELECT *,max(`score`) as `maxscore`,count(`score`) as `nbscores` FROM `scores` GROUP BY `membre` ORDER BY `maxscore` DESC LIMIT 20";

donne un bon résultat sauf que le champ time ne correspond pas au maxscore, j'ai "juste" besoin d'arriver à conserver l'association time-score tout en ne conservant qu'un résultat par membre.

Après j'ai essayé des recherches imbriqué et une requête avec un DISTINCT('membre') mais rien à faire j'ai jamais ce que je veux ...

Dans le fond ça semble être un problème assez général dès qu'on parle de classement, la difficulté vient ici du fait qu'un même membre peut avoir plusieurs entrées dans la table et que je souhaite obtenir ceci en une seule requête.

Si vous avez déjà rencontré ce problème, ou si vous avez une idée je vous en serez très reconnaissant.

Merci d'avance

       

http://www.rc-bot.com/bannieres/banniere468x60.jpg

2 réponses

Messages postés
289
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
11 juin 2010
3
As tu essayer avec une requete du style select ..... from ....score where time in(select time from score order by score desc limit 0,1)
ce n'est qu'une idee je ne sais pas du tout si cela fonctionne


Personne ne peut se permettre de juger l'autre....
Messages postés
116
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
13 février 2008

Oui j'ai tenté une recherche imbriquée mais avec ce principe je n'arrive plus à récuperer le max de chaque membre, ou alors quand j'y arrive je n'ai plus l'association. En fait je n'ai pas de meilleurs résultat pour l'instant avec une recherche imbriquée.

Je n'arrive pas à savoir comment sélectionner dans la table une ligne dont un des champ est égal au maximum du même champ dans d'autres lignes concernant le même membre. Sinon y'a la méthode avec plusieurs requêtes ... Mais j'aimerais vraiment trouver comment faire sans, il doit bien avoir une syntaxe MySQL que je n'ai pas en tête ...

Enfin merci déjà.

_________________________________________________________________________
http://www.rc-bot.com/

http://www.rc-bot.com/