Php SQL查询-如何显示过去24小时内的点?

Php SQL查询-如何显示过去24小时内的点?,php,mysql,Php,Mysql,我正在建立一个网站与积分系统,类似于Stackoverflow 这是我用来显示顶级用户(始终)的代码: 但是我如何在24小时内显示顶级用户(也包括积分)?您需要另一个表格,所有用户的活动/积分都将写入该表格 然后加入此表,并将条件设置为24小时您需要另一个表,其中所有用户的活动/积分都将写入 然后加入此表,并将条件设置为24小时,您必须制作一个特殊的表,记录用户收到的点数(以及点数) 编辑 例如,表点 user_id time awarded_points ---------

我正在建立一个网站与积分系统,类似于Stackoverflow

这是我用来显示顶级用户(始终)的代码:


但是我如何在24小时内显示顶级用户(也包括积分)?

您需要另一个表格,所有用户的活动/积分都将写入该表格

然后加入此表,并将条件设置为24小时

您需要另一个表,其中所有用户的活动/积分都将写入

然后加入此表,并将条件设置为24小时

,您必须制作一个特殊的表,记录用户收到的点数(以及点数)

编辑

例如,表

user_id   time         awarded_points
-------------------------------------
1         1298745681   10
...
然后,您只需索取今天以
WHERE time>UNIX\u TIMESTAMP(CURDATE())
或过去24小时
WHERE time>UNIX\u TIMESTAMP()-24*3600
获得的积分即可

示例用法:

SELECT u.id, u.username, u.active, SUM(p.awarded_points) AS points
FROM points AS p
LEFT JOIN users AS u ON u.id = p.user_id
WHERE time > UNIX_TIMESTAMP(CURDATE())
AND u.active = '1'
GROUP BY p.user_id
ORDER BY points DESC

我还建议在查询中增加一个限制,尤其是当你的网站变得越来越大时。

你必须制作一个特殊的表格,记录用户何时(以及有多少)获得积分

编辑

例如,表

user_id   time         awarded_points
-------------------------------------
1         1298745681   10
...
然后,您只需索取今天以
WHERE time>UNIX\u TIMESTAMP(CURDATE())
或过去24小时
WHERE time>UNIX\u TIMESTAMP()-24*3600
获得的积分即可

示例用法:

SELECT u.id, u.username, u.active, SUM(p.awarded_points) AS points
FROM points AS p
LEFT JOIN users AS u ON u.id = p.user_id
WHERE time > UNIX_TIMESTAMP(CURDATE())
AND u.active = '1'
GROUP BY p.user_id
ORDER BY points DESC

我还建议为查询添加一个限制,特别是当您的站点变得庞大时。

添加一个表,记录每个用户收到的点以及与用户表具有外键关系时的点

例如,一个名为points的表包含以下列

  • 用户ID(FK到用户表)
  • 日期时间分配
  • 点数
  • 其他感兴趣的栏目,如分配积分的用户等
然后需要查询此表,例如

SELECT SUM(numberofpoints), userid
FROM points
WHERE datetimeallocated >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY userid
ORDER BY SUM(numberofpoints) DESC

添加一个表,记录每个用户收到的点以及与用户表具有外键关系时的点

例如,一个名为points的表包含以下列

  • 用户ID(FK到用户表)
  • 日期时间分配
  • 点数
  • 其他感兴趣的栏目,如分配积分的用户等
然后需要查询此表,例如

SELECT SUM(numberofpoints), userid
FROM points
WHERE datetimeallocated >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY userid
ORDER BY SUM(numberofpoints) DESC

您还需要创建
datetime
字段。未经Stack Overflow的同意,您无法创建基于积分系统的网站。@Charlie,我不认为它拥有所有点驱动网站的专利;)只要西尔维乌斯的网站不是一个完整的副本,就不会有任何法律问题。@Kris C,是的。顺便说一句,我希望在这方面有更多的支持。你也需要创建
datetime
字段。没有堆栈溢出的同意,你不能创建基于积分系统的网站。@Charlie,我不认为你拥有所有点驱动网站的专利;)只要西尔维乌斯的网站不是一个完整的副本,就不会有任何法律问题。@Kris C,是的。顺便说一句,我希望能得到更多的支持。但是桌子应该是什么样子的呢?但是桌子应该是什么样子的呢?