我有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