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

标签 php mysql symfony doctrine-orm

我正在开发 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/

相关文章:

php - 如何在 JSON 中编码 MYSQL 响应并在 iOS 应用程序中解析

PHP:有人可以为我简化这个 IF 语句吗?

php - doctrine 2 和 zend framework 2 如何使用缓存?

PHP MySQL/PDO 更新问题

mysql - 在 MySql 中执行查询时与 only_full_group_by 相关的错误

mysql - 如何使用 phpmyadmin 复制 mysql 表和数据

mysql - 哪个在 mysql 中更快?同一事务中的多个更新查询,还是单个查询?

php - 使用 Symfony 和 PhpStorm 的 XDebug 不起作用(Ubuntu 安装)

php - 如何在Symfony 4中使用dataTables防止错误 “Invalid JSON response”?

php - 无法使用 symfony 和 doctrine 及其关联对象或表保存到 postgresql 中?