gpt4 book ai didi

php - symfony2 mysql 基于时间间隔的排名

转载 作者:行者123 更新时间:2023-11-29 12:54:23 24 4
gpt4 key购买 nike

我正在开发 symfony2 项目,我必须编写一个查询,根据用户在不同时间段(每周、每月和所有时间)的评论浏览次数来显示排名的用户

所以我有这个结构:

user table (user)   review table (review)
+---+--------+ +---+--------+------+-----+
|id |username| |id |user_id |title |desc |
+------------+ +------------+------+-----+
|5 | mark | |1 | 5 | tt | aaa |
|6 | steve | |2 | 7 | tt | aaa |
|7 | user | |3 | 6 | tt | aaa |
+---+--------+ +---+--------+------+-----+

review log view table (review_view)
+----------+--------+---------------------+
|review_id |user_id |viewed_at |
+----------+--------+---------------------+
|1 | 1 | 2014-06-05 15:12:00 |
|2 | 2 | 2014-06-05 15:12:00 |
|3 | 8 | 2014-06-05 16:12:00 |
|1 | 1 | 2014-06-05 15:12:00 |
|2 | 2 | 2014-06-07 20:12:00 |
|3 | 10 | 2014-06-07 15:12:00 |
|1 | null | 2014-06-07 15:12:00 |
|2 | 2 | 2014-06-09 15:12:00 |
|3 | 3 | 2014-06-09 15:12:00 |
|1 | 1 | 2014-06-09 15:12:00 |
|2 | 20 | 2014-06-09 15:12:00 |
|3 | 8 | 2014-06-03 15:12:00 |
+---+--------+------+---------------------+

每次用户(user_id)查看评论(review_id)时review_view表都会记录,对于未登录的用户,user_id可以为空

问题是我必须如下图所示显示它们

ranked users

图片说明:- 每周、每月和所有时间都是选项卡- 红色箭头表示排名较上周是否发生变化

那么有什么想法可以用 symfony2 或 mysql 来实现吗?

谢谢

最佳答案

您可以使用 casegroup by 获取每个用户最近两个时间段的值。这肯定会产生一条无法在 Doctrine 中轻松编写的 select 语句,您也许可以使用 DQL 来完成。

另一种选择是在 MySQL 中编写一个 View ,然后像 Symfony 程序中的表一样使用它。过去, View 在 MySQL 中的性能很糟糕,但现在可能已经有所改善。

关于php - symfony2 mysql 基于时间间隔的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com