-1

という名前のテーブルが 1 つあります。cf_posts

ID pk
user INT
subject VARCHAR
body TEXT
datetime TIMESTAMP
parent INT
category INT
mod INT

投稿がフォーラムに送信された場合、デフォルトの親は 0 です。投稿が返信として送信された場合、その親は元の投稿の ID です。

フォーラムのメイン ページのデフォルト ビューが、最新の更新された投稿 (最新の返信を含む) が山の「一番上」にあり、日付順に作業するようにするにはどうすればよいですか? PHP/MySQL クエリは何でしょうか?

これについて私が見た唯一の回避策は、別のトピックと返信テーブルですが、可能であればこのアプローチは避けたいと思います.

私が試して失敗した回避策の 1 つは、GROUP BY 親です。しかし、これにより、返信のないすべてのトピックが 1 つにグループ化されました。

まだ試していないもう 1 つのアイデアは、元の投稿の親 ID を投稿 ID と一致させ、一致する ID と親 ID を出力に含めないようにすることです。

あなたの考えを聞くのを楽しみにしています。

4

2 に答える 2

0
SELECT mainPost.subject, lastPost.datetime
FROM cf_posts cfp, 
(
 SELECT * 
 FROM cf_posts subPost
 WHERE subPost.parent = mainPost
 ORDER BY subPost.datetime DESC
 LIMIT 1
)lastPost
WHERE mainPost.parent IS NULL

これは簡単に行われるため、構文の問題がいくつかあるかもしれませんが、これが役立つと思います。

于 2012-10-26T21:01:53.083 に答える
0

次のことができます: 必要なものごとに個別にクエリを実行するため、トピックごとにクエリを実行できます。次に、UNION を使用して、それらすべてをまとめて 1 つのリストを取得できます。順序を保持するためのトリックは次のとおりです。個別のクエリごとに、返された結果に sort と呼ばれる列を追加し、その各インスタンスをより高い int 値に設定すると、最終結果が適切に並べ替えられることを保証できます。私が話していることをよりよく理解するために、SELECT ステートメントの UNION を確認してください。

于 2012-10-26T21:06:46.610 に答える