私の Web サイトのホームページで、フォーラムへの最新の投稿を表示したいのですが、同じトピックを 2 回表示したくありません。これを行うには、以下のコードをどのように変更できますか?
http://punbb.informer.com/wiki/punbb13/integration#recent_10_posts
基本的に最新の投稿を表示しますが、フォーラムのトピック/スレッドごとに 1 回だけ表示します。
私の Web サイトのホームページで、フォーラムへの最新の投稿を表示したいのですが、同じトピックを 2 回表示したくありません。これを行うには、以下のコードをどのように変更できますか?
http://punbb.informer.com/wiki/punbb13/integration#recent_10_posts
基本的に最新の投稿を表示しますが、フォーラムのトピック/スレッドごとに 1 回だけ表示します。
投稿がトピックの最後の投稿であるレコードのみを保持する条件を追加します。
WHERE p.id = (
SELECT pp.id
FROM posts AS pp
WHERE pp.topic_id = t.id ORDER BY pp.posted DESC LIMIT 1
)
トピックごとに 1 つの値のみが必要な場合は、トピックごとにグループ化し、各トピックから最新の投稿を選択できます。次に、トップ 10 のトピックを選択できます。
SQL で記述します。これを PHP に変換できます。
SELECT p.id, p.message, o.subject
FROM
((SELECT t.id
FROM posts AS p LEFT JOIN topics AS t ON p.topic_id = t.id
GROUP BY t.id
HAVING p.posted = MAX(p.posted) ) ids LEFT JOIN topics AS t ON ids.id = t.id) o
LEFT JOIN posts AS p ON o.id = posts.topic_id
ORDER BY p.posted DESC
LIMIT '0,10'
この行を変更
'SELECT' => 'p.id, p.message, t.subject',
に
'SELECT DISTINCT' => 'p.id, p.message, t.subject',