如何向点系统添加排名

时间:2012-06-17 18:54:15

标签: php mysql

我有一个系统,你可以通过猜测好结果来赚取积分。当你获得最高分时,你必须是数字1.问题是我如何能够获得排名,这样得分最高的人将是1号,下一个人将是2号等等。

示例:

    ID    Points  Rank
  -------------------------
    1   | 1000  | 1
    2   |  900  | 2
    3   |  500  | 5
    4   |  700  | 4
    5   |  800  | 3

谢谢!

1 个答案:

答案 0 :(得分:0)

让我们假设您有一个包含两个表的数据库:第一个列出用户,第二个列出了问题所获得的点数(问题来自第三个表,虽然我将在下面显示但不重要)。

User
=====
Id
Name
(...)

Question
=====
Id
(...)

Answer
=====
UserId
QuestionId
PointsTaken

要从中做一个排名,你可以做一个简单的SQL语句:

SELECT usr.Id, usr.Name, SUM(ans.PointsTaken)
  FROM User usr
  JOIN Answer ans ON ans.UserId = usr.Id
 GROUP BY usr.Id, usr.Name
 ORDER BY SUM(ans.PointsTaken) DESC

这样,您的排名就完成了。结果将是人员ID,人名和从最大到最小排序的总点数。在此旁边,您只需要显示信息。