0

我正在创建一个论坛,其中一个数据库表中包含所有主线程帖子,而另一个数据库表中包含所有答案。到目前为止,拥有两张桌子简直就是地狱。

forum_threads
thread_id | title | post

forum_answers
answer_id | ref_thread_id (foreign key) | post

如何选择最新的帖子,包括主题标题?线程可能没有任何答案,在这种情况下,所有数据都应该来自 forum_thread。但是如果它有一个答案数据应该从forum_answers中选择,还有在forum_threads中找到的标题。

希望你能理解!

如果我将所有内容都放在一张表、答案和主要帖子中,这会容易得多。虽然有人告诉我这是最好的方法,但不太确定......我正在考虑切换回只有一张桌子。

谢谢你的帮助!

4

2 回答 2

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

于 2013-01-03T08:53:54.563 回答
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;
于 2013-01-03T08:51:06.147 回答