首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于时间间隔的symfony2 mysql排名

基于时间间隔的symfony2 mysql排名
EN

Stack Overflow用户
提问于 2014-06-19 06:58:48
回答 1查看 113关注 0票数 0

我在symfony2项目上工作,我必须写一个查询,根据不同时期(每周,每月和所有时间)的评论数量显示排名的用户。

所以我有这样的结构:

代码语言:javascript
复制
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 |
+---+--------+------+---------------------+

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

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

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

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-06-19 07:12:48

您可以使用casegroup by来获取每个用户最近两个时间段的值。这肯定会产生一个不能用Doctrine轻松编写的select语句,你也许可以用DQL来实现。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24296317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档