Retrouvez les publications relatives à ces discussions dans
nos rubriques PHP, SQL.
liste des forums
liste des discussions
Participer à la discussion
-
Message publié le mercredi 27 janvier 2010 - 23h26 par jaouensky. L'argent ne fait pas le bonheur des pauvres!
-
Bonjour,
j'ai un site avec des joueurs qui ont un nombres de points, je cherche à établir le classement.
Plusieurs joueurs peuvent avoir le même nombre de points, donc si 2 joueurs on 10 points et sont 4éme, le joueur qui en a 9 sera 6éme.
Ma requête fonctionne presque
[CODE]
SELECT a.Joueur_idJoueur, 1 + count( b.pointJoueur_has_annee ) AS position
FROM joueur_has_annee a
LEFT JOIN joueur_has_annee b ON a.pointJoueur_has_annee < b.pointJoueur_has_annee
WHERE a.annee =2010
AND b.annee =2010
GROUP BY a.Joueur_idJoueur
ORDER BY position ASC , a.Joueur_idJoueur ASC
[/CODE]
J'ai une table joueur_has_annee ou figure l'id du joueur, les année auxquelles il a participé et son nombre de point sur une année.
Le problème de ma requête est que je ne retrouve pas le numéro 1, mon classement commence au numéro 2. Ce qui est logique puisque personne n'a plus de points que lui.
Je ne trouve pas comment faire en sorte qu'il apparaisse, sauf en créant un joueur bidon qui aurait plus de points et en faisant un -1 sur la position ensuite, mais c'est pas propre.
Merci de votre aide.
-
Message publié le mercredi 27 janvier 2010 - 23h36 par jaouensky. L'argent ne fait pas le bonheur des pauvres!
-
Bon j'ai trouvé ma réponse sur un site, en faisant différement
SELECT a.Joueur_idJoueur, (
SELECT COUNT( DISTINCT b.pointJoueur_has_annee )
FROM joueur_has_annee AS b
WHERE b.pointJoueur_has_annee >= a.pointJoueur_has_annee
AND b.annee =2010
) AS 'position'
FROM joueur_has_annee AS a
WHERE a.annee =2010
ORDER BY position ASC
mais je comprends moins bien comment celà fonctionne...
liste des forums
liste des discussions
Participer à la discussion
Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.