Page 1 sur 1

Je cherche une requete SQL pour un classement Top Player

Posté : 12 janv. 2007, 11:55
par reverent
Bonjour et meilleurs voeux à la communautée !
Voila mon souci concerne la mod Arcade (pris sur punbb.org), en fait il existe le classement de chaque jeux, individuelement, mais pas de classement des meilleurs joueurs sur l'ensemble.
Comme indiqué dans le titre, je ne parviens pas a effectuer correctement une requete qui :

- classerai les 'player' obtienant le plus de meilleurs 'score' sur le nombre maximum de 'game'

- pour ensuite rappeler les variables dans un tableau php classant le tout du plus grand au plus petit (ce meme tableau dupliqué je pense par une boucle do>while)
J'ai pas mal chercher du coté des arguments sql count, MAX() ... mais la je patauge et n'obtient rien de bien convaiquant huh
J'ai fais ca, mais ca ne donne rien

SELECT DISTINCT(player) FROM test_arcade_ranking WHERE score = (SELECT COUNT MAX(score) FROM test_arcade_ranking WHERE game = (SELECT COUNT DISTINCT MAX(score) FROM test_arcade_ranking)
Voici la structure de la table pun_arcade_ranking qui stock les classements :

Champs : (premiere colone le nom du champ, seconde colone sa valeur, les valeurs sont a titre d'exemple)

id (1)
game (tetris)
player (moi)
score (300)

id (2)
game (tetris)
player (toi)
score (200)


id (3)
game (bomberman)
player (moi)
score (500)

id (4)
game (bomberman)
player (toi)
score (100)


id (5)
game (pacman)
player (moi)
score (200 ...)

id (6)
game (pacman)
player (toi)
score (500)

ect ...

Dans l'exemple ci dessus je voudrai que ma requete me mette comme resultat :
1er Top score : moi avec 2 jeux dont le score est le meilleur
2eme Top score : toi avec 1 jeux dont le score est le meilleur
ect ...
Comment envisageriez vous ceci ?
j'espere que vous aurez compris et que vous pourrez m'aider !

Merci par avance.

Posté : 12 janv. 2007, 15:07
par AB
Ma méthode pour des pb de requête complexe:

Je commence par réaliser le script avec plusieurs requêtes simples. Puis quand ça marche, j'optimise mais pas avant. Comme ça je sais si c'est un pb de méthodologie ou de synthaxe.

Donc ma question est : as-tu réussi à obtenir ce que tu souhaites avec plusieurs requêtes successives simples?

Posté : 12 janv. 2007, 18:44
par Invité
Re-regarde ma demande et tu verra que tu ne pourra pas y arriver avec une succession de requete, a moins de faire boucles sur boucles, comptages et incrementations en Php, allourdissant le tout !!! Essai, si tu y arrive par ta methode (je sais faire du listage, du classement de donnée par categories, du classement conditionnel ect ... en php/mysql).

Vois mon site http://annunakis.free.fr/

Je voudrai mettre le top classement sur cette page http://annunakis.free.fr/ank/arcade.php

Je pourrai aussi creer un champs username et topscore dans la table qui contient les jeux enregistré (pas la meme table que celle precedente, l'autre c'est la table qui stock les classement seulement), et à chaque fois qu'on soumet un score ca compare avec ce qu'il y a d'entrée dans le champs top score pour le jeu donnée, et si c'est superieur alors ca update l'username et le topscore, mais ceci peut creer des incohérences et je veux pas toucher aux structures des tables (c'est un mod de punbb et voudrai garder la base tel qu'elle).

Posté : 13 janv. 2007, 01:20
par AB
Je ne voulais pas dire que plusieurs requêtes successives sont une fin en soi. Bien sûr que ça alourdi le code. Mais on s'aperçoit souvent en voulant le faire, qu'une petite modif de la structure des tables peut faciliter grandement les choses. Mais bon, si tu ne peux pas modifier tes tables...C'était un conseil d'ordre général et pas forcément utile à ton pb.
Maintenant il ne reste plus qu'à taper le code : SOS grosses pointures des requêtes mySql, coucou où êtes-vous ?
Il y en a plusieurs sur le forum mais souvent ils ne se manifestent que quand on a un peu débroussailler les choses. :wink:

Posté : 13 janv. 2007, 01:45
par Ajoloca
Bonsoir,

Dans ton site tu affiches le meilleur score par jeux et son détenteur.

Là tu voudrais le nombre de fois qu'un même joueur détient un score et les trier par ordre décroissant.

Une question me viens à l'esprit. Pourquoi ne pas utiliser les infos que tu as déjà ?

Il te suffis de compter le nombre de fois que le même joueur se trouve dans ton tableau, non ?

Posté : 13 janv. 2007, 20:47
par Invité
Oui mais ou il est premier.
Ces requete imbriqué je n'en es pas l'habitude.
Il faut que ce soit un comptage du nombre de fois ou le joueur est premier sur chaque jeux.

Posté : 13 janv. 2007, 20:56
par Invité
J'ai posté la bas aussi : (celui de punbb avance bien, normal cest le forum du CMS que j'utilise.

http://www.developpez.net/forums/showth ... ost1665043
http://www.punbb.fr/forums/viewtopic.php?id=4134