superbaloo78
Messages postés87Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention19 mai 2006
-
21 janv. 2006 à 19:41
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 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 ....
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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