Hi there codeurs dans le monde,mySQL « Rang dans Highscore » -query
Je travaille sur un projet où les utilisateurs peuvent faire certaines choses et les points de gain pour elle. Pour simplifier cette question disons que nous avons 2 tables utilisateur et points.
-- table user -- table points
+---------------+ +-----------------------------+
| id | name | | id | points | user_id |
+---------------+ +-----------------------------+
| 1 Tim | | 1 5 1 |
| 2 Tom | | 2 10 1 |
| 3 Marc | | 3 5 1 |
| 4 Tina | | 4 12 2 |
| 5 Lutz | | 5 2 2 |
+---------------+ | 6 7 1 |
| 7 40 3 |
| 8 100 1 |
+-----------------------------+
Maintenant, pour obtenir les meilleurs scores liste complète J'utilise la requête suivante
SELECT u.*, SUM(p.points) AS sum_points
FROM user u
LEFT JOIN points p ON p.user_id = u.id
GROUP BY u.id
ORDER BY sum_points DESC
entraînant une amende liste des meilleurs scores avec tous les utilisateurs du premier au dernier
+------------------------------+
| id | name | sum_points |
+------------------------------+
| 1 Tim 127 |
| 3 Marc 40 |
| 2 Tom 14 |
| 4 Tina 0 |
| 5 Lutz 0 |
+------------------------------+
Bon retour à la question elle-même. Sur le profil d'un seul utilisateur, j'aimerais montrer son classement dans la liste des meilleurs scores. Est-ce que cela peut être fait en utilisant une seule requête montrant que par exemple Tom (id = 2) est classé à la place 3?
Merci beaucoup :-)
+1, c'est ce que Je voulais, mais vous l'avez eu en premier. Une chose à noter - pour obtenir la place de l'utilisateur ce serait count (*) + 1 (comme vous l'avez dit cela n'obtiendra que le nombre d'utilisateurs avec des scores plus élevés que @this_user). – rosscj2533
@ rosscj2533: merci, corrigé. – egrunin