私はPHPとMySQLを使用して基本的なフォーラムを作っています。私はすべてのスレッドに対して1つのテーブルを使用しています。それはforum_posts
と命名されています。これは、これらのフィールドがあります。高度なMySQLの注文
id, creator, time, title, message, thread_reply, forum_id, locked, sticky
ポストはthread_reply
がそれ以外の場合は0に設定され、その後、thread_reply
はこの記事に返信がされていることをスレッドのid
に設定されている新しいスレッドである場合。すべてのスレッドを表示しているページで、スレッドに返信された最後の投稿の時刻までにスレッドを並べ替える必要があります。私は、このクエリを使用しています:
SELECT `id`, `title`, `creator` FROM `forum_posts` WHERE `thread_reply` = 0 AND `forum_id` = 1 ORDER BY -`time`
だけの問題ではなく、最後の返信がスレッドにあった時間の、スレッドが作成された時点で注文のみそのクエリです。私が何を話しているのか分からなければ、フォーラムのホームページを見て、スレッドが最後に投稿された時までにスレッドを注文する方法を見てください。
または相関サブクエリを使用します。 –
私は多くのフォーラムシステムを追加して、 "スレッド"データを "ポスト"データから分離しておくと、このような問題を解決しやすくなります。彼らは、それが入っているフォーラム、それを開始したユーザー、最後に返信された時間、そしてしばしば最後に追加されたIDなどのスレッドを含むテーブルを持っています。そして実際の投稿はまったく別のテーブルにあります。 –