0

最近アクティブなトピック セクションを作成しようとしていますが、クエリの問題が発生しています。

投稿、トピック、カテゴリ (最小から最大) の 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 のメッセージ

これにはサブクエリが必要ですか? ありがとう!

4

1 に答える 1