最近アクティブなトピック セクションを作成しようとしていますが、クエリの問題が発生しています。
投稿、トピック、カテゴリ (最小から最大) の 3 つのテーブルがあります。すべての投稿はトピックに関連付けられており、すべてのトピックはカテゴリに関連付けられています。
現在、問題は、投稿された最新のトピックを一意に表示することです。
簡単なシナリオを次に示します。ユーザー X がトピック A に投稿し、次にトピック B に投稿します。ユーザー Y がトピック C を作成し、トピック A に投稿します。ユーザー Y がトピック A に投稿する直前に、ユーザー Z がトピック A に投稿しました。
アクティブなトピックのリストで、次のことを示したいと思います。
- トピックA - Yさんのメッセージ
- トピックC - Yさんのメッセージ
- トピック B - X さんのメッセージ
私の現在のSQLはシーケンスを正しく取得するだけですが、同じトピックも取得します:
- トピックA - Yさんのメッセージ
- トピック A - Z のメッセージ
- トピックC - Yさんのメッセージ
- トピック B - X さんのメッセージ
トピック A - X のメッセージ
SELECT topic_subject、post_date、post_msg、post_by、cat_color FROM トピック、投稿、カテゴリ WHERE topic_id = post_topic AND topic_cat = cat_id ORDER BY post_date DESC
GROUP BY topic_subject またはその ID を追加すると、次のような元のトピック作成者が取得されます。
- トピックC - Yさんのメッセージ
- トピック B - X さんのメッセージ
- トピック A - X のメッセージ
これにはサブクエリが必要ですか? ありがとう!