Requete pour le classement d'une table

Résolu
superbaloo78 Messages postés 87 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 19 mai 2006 - 21 janv. 2006 à 19:41
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 21 janv. 2006 à 22:38
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

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 janv. 2006 à 22:38
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
3
Rejoignez-nous