我创建了一个带有下表的个人论坛(仅限必需字段):
TABLE category:
id (int)
TABLE subcategory:
id (int)
idCategory (int)
TABLE topic:
id (int)
idUser (int)
idSubcategory (int)
TABLE message:
id (int)
idUser (int)
idTopic (int)
datePub (datetime)
所以我在主题中有信息,在子类别中有信息。我的目标是在子类别和类别中显示用户发布的最后一条消息。现在,我使用了这个mysql请求(只显示子类别中的消息):
private static function lastMessage() {
$last_message = Database::getQuery( '
SELECT DISTINCT max(m.datePub) AS datePub, m.subject, s.id, m.idTopic
FROM ln_forum_subcategory s
LEFT JOIN ln_forum_topic t on s.id = t.idSubcategory
LEFT JOIN (
SELECT max(m2.datePub) as datePub, idTopic, max(subject) as subject
FROM ln_forum_message m2
LEFT JOIN ln_forum_topic t2 on m2.idTopic = t2.id
GROUP BY idTopic ORDER BY datePub DESC
) m ON m.idTopic = t.id
GROUP BY s.id
ORDER BY m.datePub DESC' )->fetchALL( \PDO::FETCH_OBJ );
return $last_message;
}
它适用于日期,但不适用于id或邮件作者(无法正确链接到帖子)。
有人看到问题出在哪里了吗?谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!