フォーラムの場合、 、 、 などの追加のリンクされた情報とともに を取得したいと考えてforumTopic
います。lastPostDate
lastPostUserName
starterUserName
と で問題が発生しlastPostUserName
ますstarterUserName
。にリンクされた投稿が 1 つしかない場合、forumTopic
正しく機能しているように見え、両方lastPostUserName
がstarterUserName
埋められます。トピックに複数の投稿がリンクされている場合、 のみがstarterUserName
埋められ、lastPostUserName
NULL
データベースの構造は、がのformCategory
数を持ち、が にリンクされています。formTopic
forumTopic
forumPost
forumPost
user
SELECT forumTopic.*,
COUNT( forumPost.id ) AS postCount,
MAX(forumPost.date) AS lastPostDate,
(SELECT name FROM user AS u1 WHERE u1.id = forumPost.posterUserId AND forumPost.date = MAX(forumPost.date) )
AS lastPostUserName,
(SELECT name FROM user AS u2 WHERE u2.id = forumPost.posterUserId AND forumPost.date = MIN(forumPost.date) )
AS starterUserName
FROM forumCategory
LEFT JOIN forumTopic ON forumCategory.id = forumTopic.forumCategoryId
LEFT JOIN forumPost ON forumPost.forumTopicId = forumTopic.id
WHERE forumCategory.rewrittenName='someforumcategory'
AND forumCategory.active='Y'
AND forumTopic.active='Y'
AND forumPost.active='Y'
GROUP BY forumTopic.id
ORDER BY forumPost.date ASC