我正在创建一个论坛,我在一个数据库表中包含所有主要帖子帖子,在另一个数据库表中包含所有答案。到目前为止,拥有两张桌子真是太棒了。
forum_threads
thread_id | title | post
forum_answers
answer_id | ref_thread_id (foreign key) | post
如何选择最新帖子,包括主题标题?该线程可能没有任何答案,在这种情况下,所有数据都应该来自forum_thread。但是如果它有答案数据应该从forum_answers中选择,也可以在forum_threads中找到标题。
希望你明白!
如果我把它全部放在一个表格,答案和主要帖子中,这会更容易。虽然我被告知这是最好的方式,但不太确定.....我考虑换回只有一张桌子。
感谢您的帮助!
答案 0 :(得分:1)
这应该可以满足您的需求,但您应该在这些表格中存储日期。
SELECT
ft.thread_id,
ft.title,
COALESCE(fa.post,ft.post) AS post
FROM
forum_threads ft
LEFT JOIN
forum_answers fa
ON (ft.thread_id = fa.ref_thread_id)
ORDER BY
ft.thread_id
LIMIT 1;
它会从post
提供forum_answers
值,除非该线程没有该值,然后它会从post
<只提供forum_threads
值/ p>
答案 1 :(得分:0)
试试这个。
SELECT fa.post, ft.title
FROM forum_threads ft INNER JOIN forum_answers fa ON
ft.thread_id = fa.ref_thread_id
ORDER BY fa.answer_id
LIMIT 1;