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

时间:2018-07-11 18:30:50

标签: php mysql

我使用下表创建了一个个人论坛(仅必要字段):

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或作者(无法正确链接到帖子)。

有人看到问题出在哪里吗?谢谢!

0 个答案:

没有答案