私は自分のウェブサイトのフォーラム ティーザーを作成するのが好きです。最新の投稿またはスレッドを表示するのは簡単です..最新のスレッドと投稿を同じクエリで取得し、最後のアクティビティ順に並べるのが好きです。したがって、同じクエリで REPLY TO POST の日付と THREAD POST の日付で並べ替えられます。グループ化の方法に関係があると思いますが、よくわかりません。
テーブル
スレッド
id, header, text, date, author
投稿
id, text, date, author, thread_id
使用例
20 分前 - php/mysql スクリプトの作成方法 (2)
17 分前 - ここで助けてください (0)
1 時間前 - PHP のヘルプが必要です (1)
ご覧のとおり、回答済みのスレッドと新しいスレッドの両方がリストに表示されています。(最新の返信の日付または作成日、ヘッダー、および返信の count() が必要です)
これを行う方法を理解していただければ幸いです。
トロールズ
アップデート:
私はこれを持っていて大丈夫ですが、返信のあるスレッドしか取得しません。
SELECT
threads.*,
posts.*,
(SELECT date FROM posts WHERE thread_id = threads.id ORDER BY date DESC LIMIT 0,1) AS postdate,
(SELECT count(id) FROM threads WHERE thread_id = thread.id) AS replys
FROM
threads,
posts
WHERE
threads.id = posts.thread_id
GROUP BY
thread_id
ORDER BY
postdate DESC,
thread.date
LIMIT
0,15
これどうやってするの?
アップデート
あああああああああああああああああああああああああ!!!
私はなんとか自分でそれを行うことができました:-)それを正しくするのにしばらく時間がかかりました.
SELECT
fisk_debat.id,
fisk_debat.dato,
IF((SELECT count(id) FROM fisk_debat_svar WHERE debatid = fisk_debat.id) < 1, fisk_debat.dato, (SELECT dato FROM fisk_debat_svar WHERE debatid = fisk_debat.id ORDER BY dato DESC LIMIT 0,1)) AS svardato,
fisk_debat.overskrift,
(
SELECT count(fisk_debat_svar.debatid)
FROM fisk_debat_svar
WHERE fisk_debat_svar.debatid = fisk_debat.id
) AS svar
FROM fisk_debat
GROUP BY id
UNION
SELECT
fisk_debat_svar.debatid AS id,
max(fisk_debat_svar.dato) AS dato,
max(fisk_debat_svar.dato) AS svardato,
(
SELECT fisk_debat.overskrift
FROM fisk_debat
WHERE fisk_debat.id = fisk_debat_svar.debatid
) AS overskrift,
(
SELECT count(fisk_debat_svar.debatid)
FROM fisk_debat_svar
WHERE fisk_debat_svar.debatid = id
) AS svar
FROM fisk_debat_svar
WHERE id != id
GROUP BY id
ORDER BY svardato DESC, dato DESC
LIMIT 0,15