创建一个没有分数字段的简单排行榜。 PHP/Mysql

Posted

技术标签:

【中文标题】创建一个没有分数字段的简单排行榜。 PHP/Mysql【英文标题】:Creating a simple leaderboard without a score field. PHP/Mysql 【发布时间】:2015-05-04 12:23:01 【问题描述】:

如何创建一个按数量对每个用户进行排名的基本排行榜?

例如,我正在尝试创建一个排行榜,根据书评次数最多的用户对用户进行排名

我曾尝试使用聚合函数,但似乎无法弄清楚如何将其组织到排行榜中。查看其他教程,他们似乎都有一个分数字段来执行此操作。

有什么想法吗?

【问题讨论】:

您是否将书评存储在数据库中? 这样的问题可能最好与您的数据库架构和您正在尝试的当前查询一起呈现。这将确保您已经做出了事先的努力,并将与读者分享您对这个问题的看法。 是的,它存储在数据库中,涉及的字段名称为 studentid 和 review 【参考方案1】:
SELECT 
  user_id, 
  (SELECT COUNT(*) FROM `reviews` r WHERE r.user_id = u.user_id) as user_reviews 
FROM `user` u 
ORDER BY 
  (SELECT COUNT(*) FROM `reviews` r WHERE r.user_id = u.user_id) DESC

在不了解您如何存储数据等的更多详细信息的情况下,以上将按照数据库中存在多少评论的顺序列出用户。

【讨论】:

【参考方案2】:

一个简单的方法是在 mysql 中创建一个表,然后输入所有数据。然后在 php 端,当需要显示数据时,从表中获取该数据并按最高分排序,然后降序排列。然后通过 html 和 CSS 整齐地呈现出来。

【讨论】:

以上是关于创建一个没有分数字段的简单排行榜。 PHP/Mysql的主要内容,如果未能解决你的问题,请参考以下文章

排行榜 - 此游戏没有公开分数

游戏中心排行榜不工作(“没有分数”)

Unity简单的分数排行榜功能实现(Web数据库)

将分数发布到 Game Center 排行榜

Google Play 排行榜 - 无法提交分数

PHP中游戏的排行榜/高分