厄介な mySQL クエリを作成する必要があり、データベース構造が貧弱であるために苦労しています (何年も前に作成しました):/
forum_list
、 、forum_topics
およびの 3 つのテーブルがありforum_replies
ます。名前を表示して、forum_list テーブルを巡回しています。それぞれの最後の投稿の日付と author_id を取得したいと考えています。
問題は、最後の投稿が の返信でforum_replies
あるか、トピックである可能性があることですforum_topics
サブクエリか何かが必要ですか?
テーブルforum_list
id name
1 General Chat
テーブルforum_topics
id forum author date
1 1 John 2012-12-12 12:12:12
テーブルforum_replies
id forum topic author date
1 1 1 John 2012-12-12 12:12:12
アップデート
SELECT forum_list.id
, GREATEST(forum_topics.date, forum_replies.date) date
, CASE GREATEST(forum_topics.date, forum_replies.date)
WHEN forum_topics.date THEN MAX(forum_topics.author)
WHEN forum_replies.date THEN MAX(forum_replies.author)
END author
FROM forum_list
LEFT JOIN (
SELECT forum_topics.id
, max(forum_topics.date) date
FROM forum_topics
GROUP BY forum_topics.forum
) forum_topics_max
ON forum_list.id = forum_topics_max.id
LEFT JOIN forum_topics
ON forum_topics_max.id = forum_topics.id
AND forum_topics_max.date = forum_topics.date
LEFT JOIN (
SELECT forum_replies.id
, max(forum_replies.date) date
FROM forum_replies
GROUP BY forum_replies.topic
) forum_replies_max
ON forum_list.id = forum_replies_max.id
LEFT JOIN forum_replies
ON forum_replies_max.id = forum_replies.id
AND forum_replies_max.date = forum_replies.date
GROUP BY forum_list.id