我正在制作一个健身日志,室内划船者可以在那里记录结果。为了让它变得有趣和激励,我正在实施一个成就系统。我喜欢有一个成就,如果有人在 24 周内划船超过 90 次,他们就会获得该成就。
是否有人对我如何在 MYSQL 中实现这一点有一些提示。日志的 mysql 表非常简单:id、用户 ID、日期(时间戳)等(省略其余部分,因为它并不重要)
要点是第一个行日期和最后一个行日期不能超过 24 周。
我从您的申请中假设您想要最近的 24 周。
在 mysql 中,您可以这样做:
select lb.userid
from logbook lb
where datediff(now(), lb.date) >= 7*24
group by userid
having count(*) >= 90
如果您在任意 24 周内需要它,您可以修改问题吗?
只需执行 sql 查询来计算用户从现在到 24 周前的行数。这是一个非常直接的查询。
看看在 mysql 中使用一些东西datediff
来获得现在和 24 周前之间的差异。
在你设置了一个脚本来执行此操作后,设置一个 cron 作业以每天或每周运行并对此进行一些自动化。
我认为您应该创建一个表格成就者,并在其中填充每天的成就者。您可以设置一个经常性(每天,在午夜之前)事件,您可以在其中运行如下查询:
delete from achievers;
insert into achievers (
select userid
from logbook
where date < currenttimestamp and date > currenttimestamp - 24weeks
group by userid
having count(*) >= 90
)
对于 mysql 中的事件:http: //dev.mysql.com/doc/refman/5.1/en/events-overview.html
此查询将为您提供 24 周内的用户总活动列表
select * from table groupby userid where `date` BETWEEN DATE_SUB( CURDATE( ) ,INTERVAL 168 DAY ) AND CURDATE( ) having count(id) >= 90