我正在建立一个论坛,我遇到了一些问题。
基本的数据库结构如下所示:
users
| user_id | username
categories
| category_id | category_name |
forum_posts
| post_id | ref_post_id (FK) | ref_category_id (FK) | ref_user_id (FK) | post_date |
如果 ref_post_id 为 0,则意味着它是具有标题的线程的主要帖子。对于线程的答案 ref_post_id 等于主帖子的 post_id。我希望你明白。
我如何获得每个类别的最新帖子?包括帖子线程标题和用户表中的用户名。我应该更改我的表结构并将“latest_post_id”字段添加到类别表还是什么?
非常感谢您的帮助。我知道有类似的问题,但我也想知道我是否应该将 latest_post_id 和所有内容存储在类别表中,或者有一个巨大的查询来检索每个页面加载时的所有内容。
编辑 2:这是我当前的查询:
SELECT category_id, name,
(SELECT COUNT(*) FROM forum_posts WHERE ref_category_id = category_id AND ref_post_id = 0) count_threads
(
SELECT title, ref_user_id, username FROM forum_posts
LEFT JOIN users ON user_id = ref_user_id
WHERE latest_post_id = (SELECT MAX(latest_post_id) FROM forum_posts WHERE ref_category_id = category_id LIMIT 1)
)
FROM forum_categories