任何人都可以幫助我處理這種類型的查詢。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,則運行下一個查詢。 –
但過濾器間隔存儲在另一個表中,因此管理員可能會增加間隔數。例如。他可以創建另一個過濾器「過去一週」。因此,在這種情況下,我們需要在每次更改過濾器時修改查詢 –
如果他可以創建新過濾器,然後只是遍歷包含所有可能日期範圍的查詢 –