任何人都可以帮助我处理这种类型的查询。MySQL:按日期间隔级联过滤
我:
posts
表comments
表
它们通过comments.post_id = posts.post_id
列链接。
我用户可以通过评论过去后置滤波器:
- 1小时
- 24小时
- 2天后,等
如果用户选择,以示对职位过去1小时,但这期间没有帖子,我们需要一步一步来:
选择过去的帖子1 hour
,如果为空 - 过去24 hours
,如果为空 - 过去2 days
,如果为空 - 自成立以来(没有任何条件)。
任何人都可以请帮我建立这样的查询吗?
UPD
“的意见筛选职位” 之类指算意见。
所以实际上目标是要求“显示我的帖子按照过去XXX小时离开的评论数排序”。
如果选择“过去一小时”,但过去1小时内没有留言留言,我们需要取回过去24小时留言的帖子(按留言数排序)等等。
表结构
文章:
条
- POST_ID
- 标题
- 内容
- DATE_ADDED
评论
- COMMENT_ID
- 内容
- POST_ID
- DATE_ADDED
所以链接posts.post_id = comments.post_id
。
我想有一个结果,当用户查看最多评论过去一小时的帖子:排序
posts.post_id | comments_count | posts.date_added | group
---------------+----------------+------------------+----------------
156 | 8 | 2013-04-02 | hour
154 | 3 | 2013-04-02 | hour
129 | 1 | 2013-03-10 | 24 hours
13 | 14 | 2013-02-18 | 48 hours
138 | 6 | 2013-03-29 | week
137 | 4 | 2013-03-29 | week
161 | 21 | 2013-04-11 | month
6 | 2 | 2013-01-24 | year
103 | 8 | 2013-03-02 | since inception
结果:
- 排在首位的是已经注释2个职位由于过去一小时,并通过评论排序计数。
- 接下来,我们将发布过去一天内发表的评论。
- 下一页 - 帖子,因为最近两天评论
- 的帖子,因为过去一周评论,他们再次应由意见,责令数
- 在过去的一个月
- 在过去的一年
- 在年底此列表中我们需要放置比一年前更多的评论文章,并且还应该按照评论次序排列。
在此先感谢。
我认为你最好的解决方案是在'if()'语句中包装每个查询。如果记录计数为0,则运行下一个查询。 –
但过滤器间隔存储在另一个表中,因此管理员可能会增加间隔数。例如。他可以创建另一个过滤器“过去一周”。因此,在这种情况下,我们需要在每次更改过滤器时修改查询 –
如果他可以创建新过滤器,然后只是遍历包含所有可能日期范围的查询 –