繁体   English   中英

基于时间间隔的symfony2 mysql排名

[英]symfony2 mysql ranking based on time interval

我正在从事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可以为null

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

排名用户

图片描述:-每周,每月和所有时间都是选项卡-红色箭头表示排名是否与上周相比发生了变化

所以有什么想法可以用symfony2或mysql吗?

谢谢

您可以使用casegroup by来获取最近两个时间段内每个用户的值。 这肯定会产生一个选择语句,该语句不能用Doctrine轻松编写,您可以使用DQL做到这一点。

另一种选择是在MySQL中编写一个视图,然后将其用作Symfony程序中的表。 视图曾经在MySQL中具有糟糕的性能,但是可能已经得到改善。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM