Classement de joueur MySQL

Résolu
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 - 8 mai 2007 à 15:41
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 - 10 mai 2007 à 12:06
Bonjour a tous

J'ai une base dans laquelle j'ais les hitscores de mes petits jeux... Cette table est comme ceci:

CREATE TABLE `tky_hitscore` (
  `id` int(255) NOT NULL auto_increment,
  `username` varchar(80) NOT NULL default '',
  `usergame` int(255) NOT NULL default '0',
  `userscore` int(255) NOT NULL default '0',
  `userdate` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1 ;

Explicatif :

UserName = Nom du joueur
UserGame = Numero du jeu
Userscore = Score du joueur
UserDate = Date du score

Je voudrais faire un requette qui permette de prendre le score le plus haut de chaque joueur et ce pour tout les jeux. De faire la moyenne et de faire un classement?

J'espere qu quelqu'un poura me donner un coup de main, merci d'avance.

Bonne continuation,
[Gally Home Corp]

4 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
8 mai 2007 à 18:10
Salut,

Tu peux essayer ça ?

SELECT MAX(userscore) AS highscore, userdate, username, usergame FROM tky_hitscore GROUP BY usergame;

Normalement, ça marche (testé en local).

MAX(userscore) AS highscore => retourne la plus haute valeur, en appelant cette colonne de résultat highscore
GROUP BY => indispensable quand on utilise MAX() : précise pour quelle valeur il faut prendre le max.

Pour avoir le plus haut score de chaque joueur, il faudrait faire GROUP BY username
Pour avoir le plus haut score du jour, il faudrait faire GROUP BY userdate

Mais ces deux exemples ne veulent pas dire grand chose, dans la pratique, puisque les niveaux des scores varient probablement d'un jeu à l'autre... C'était juste pour illustrer.

Bonne continuation.
3
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
9 mai 2007 à 13:09
Bonjour,

Merci pour cette réponse. mais je penses qu'il faudrait utiliser AVG() et j'ai pas mal de mal avec ;-).

Il faudrait une moyenne des divers scores pour chaque utilisateur et toujours pour le Max(usergame).

Merci d'avance,
[Gally Home Corp]
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 mai 2007 à 18:47
"Je voudrais faire un requette qui permette de prendre le score le plus haut"

Faudrait savoir... Pour moi, le score le plus haut, c'est pas une moyenne...
Dans ce cas, tu prends la même requête que je t'ai filée, mais tu remplaces MAX par AVG...
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
10 mai 2007 à 12:06
Bonjour,

Et desole "De faire la moyenne et de faire un classement?", il y avait cela aussi et merci pour l'aide.

En gros le MAX est bon pour une partie de la requete. En fait il y a plusieur petit jeux et une seule table.

UserGame = Numero du jeu
UserName = Nom du joueur
Userscore = Score du joueur
UserDate = Date du score

Ce qu'il faudrait:

pour chaque "UserGame" (jeu differents) prendre les scores max et de faire la moyenne pour chaque playeur et de les classes du plus grand o plus petit

encore merci pour ton aide,
[Gally Home Corp]
0
Rejoignez-nous