そのようなタイプのクエリで私を助けることができますか。
私は持っている:
posts
テーブルcomments
テーブル
それらはcomments.post_id = posts.post_id
列を介してリンクされています。
ユーザーは、過去のコメントで投稿をフィルタリングできます。
- 1時間
- 24時間
- 2日など
ユーザーが過去 1 時間の投稿を表示することを選択したが、この期間に投稿がない場合は、段階的に進む必要があります。
1 hour
過去、空の場合 - 過去24 hours
、空の場合 - 過去2 days
、空の場合 - 創業以来 (条件なし)の投稿を選択します。
そのようなクエリを作成するのを手伝ってくれる人はいますか?
UPD
「コメントで投稿をフィルター」とは、コメント数で並べ替えることを意味します。
つまり、実際の目標は、「過去 XXX 時間に残されたコメント数で並べ替えられた投稿を表示する」という要求です。
また、「過去 1 時間」が選択されているが、過去 1 時間にコメントが残っている投稿がない場合は、過去 24 時間にコメントが残っている投稿 (コメント数でソート) を取得する必要があります。
テーブル構造
投稿:
- post_id
- 題名
- コンテンツ
- date_added
コメント
- comment_id
- コンテンツ
- post_id
- date_added
リンクはposts.post_id = comments.post_id
.
ユーザーが過去 1 時間に最も多くコメントされた投稿を表示したときに、次の結果を得たいと考えています。
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
結果の並べ替え:
- リストの一番上は、過去 1 時間以内にコメントされた 2 件の投稿で、コメント数で並べ替えられています。
- 次に、前日にコメントされた投稿を配置します。
- 次 — 過去 2 日間の期限がコメントされた投稿
- コメントされた投稿の期限は過去 1 週間です。ここでも、コメント数の順に並べる必要があります
- 過去 1 か月間
- 過去 1 年間
- このリストの最後には、1 年以上前にコメントされた記事を配置する必要があり、コメント数の順に並べる必要もあります。
前もって感謝します。