• imprimer
  • aide

Forum de discussions « PHP - SQL »

Retrouvez les publications relatives à ces discussions dans nos rubriques PHP, SQL.

[SQL] Création d'un classement avec join left

liste des forums liste des discussions Participer à la discussion

Photo de jaouensky 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.
Photo de jaouensky 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.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions