为每个类别选择最后一条消息

muk1a3rh  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(226)

我创建了一个带有下表的个人论坛(仅限必需字段):

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或邮件作者(无法正确链接到帖子)。
有人看到问题出在哪里了吗?谢谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题