Requete pour le classement d'une table [Résolu]

Signaler
Messages postés
87
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
19 mai 2006
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour,
J'ai une table mysql avec les champs suivant ...
id,
nom,
tag,
points

Je souhaite sortir le nom, le tag, les points et le classement dans ma table.
Je m'explique j'ai les enregistrement suivant
1,test1,t1,1000
2,test2,t2,1100
3,test3,t3,1200

donc par exemple lorsque je demande le nom, le tag, les points et le classement de l'id 1, je veux que mon serveur me renvoi test1 , t1 , 1000 , 3

Mon seul probleme reside dans le fait que je sache pas comment le faire ....je ne trouve pas la requete ....

1 réponse

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
31
salut


reprise de google


SELECT U1.name, COUNT(*) AS rank
FROM Users AS U1
INNER JOIN
Users AS U2
ON U2.score > U1.score OR
(U2.score = U1.score AND U2.name <= U1.name)
GROUP BY U1.name
ORDER BY rank

name rank
John 1
Jim 2
Joe 3
Jerry 4

If you require equal scores to have the same rank then try this

SELECT U1.name, COUNT(DISTINCT U2.score) AS rank
FROM Users AS U1
INNER JOIN
Users AS U2
ON U2.score >= U1.score
GROUP BY U1.name
ORDER BY rank

name rank
John 1
Jim 2
Joe 2
Jerry 3

Or alternatively, with a slightly different numbering

SELECT U1.name, COUNT(U2.score) + 1 AS rank
FROM Users AS U1
LEFT OUTER JOIN
Users AS U2
ON U2.score > U1.score
GROUP BY U1.name
ORDER BY rank

name rank
john 1
jim 2
joe 2
jerry 4