获取每个类别中的最后一篇文章


Get last post in each category

我有4个表:

 1. forums (id,forum_id,name,group_id) - there are categories and
        sub-categories
 2. topics (id,forum_id,user_id,name,dt,deleted[default - 0])
 3. posts (id,topic_id,text,edit_dt,user_id,deleted)
 4. users (id,name)

获取主要类别最新帖子的最佳方法是什么?或者在论坛表中添加新字段- last_post_id, last_post_name, last_post_dt,并在delete,添加新主题/回复更新这些字段?

首先,要确定您的"最后一篇文章",您应该在您的posts表中添加时间戳(DateTime)。

另外,在你的问题中,定义什么是类别(我假设它是主题)和你的数据的一个例子,与你想要的输出的一个例子配对。

我在forums表中添加了字段(last_post_id,last_poster_id,last_dt),当插入新/删除/更新帖子时,主论坛将更新最新信息

如果数据库不是很大,并且您在所有的外键和id中都有索引,那么您可以动态地完成它,而无需创建任何新字段。

我假设posts表中的id字段是自动递增的。这个mysql查询选择每个论坛中最近一个有活动的主题的名称。

SELECT T.name FROM forums F 
JOIN topics T ON T.forum_id = F.id
JOIN posts P ON P.topic_id = T.id
GROUP BY F.id
ORDER BY P.id ASC