2013-01-03 181 views
0

我創建了一個論壇,我在一個數據庫表中將所有主線帖發送到了另一個論壇。到目前爲止,有兩張桌子真是太糟糕了。獲取最後一個論壇帖子

forum_threads 
thread_id | title | post 

forum_answers 
answer_id | ref_thread_id (foreign key) | post 

如何選擇最新帖子,包括帖子標題?該線程可能沒有任何答案,在這種情況下,所有數據應該來自forum_thread。但是,如果它有一個答案數據應該從forum_answers中選擇,也可以在forum_threads中找到。

希望你明白!

如果我把它放在一張表,答案和主要帖子中,這樣會更容易。雖然我被告知這是最好的方式,但不太確定.....我正考慮切換回只有一張桌子。

感謝您的幫助!

+0

post價值,爲什麼不有單表呢? –

+0

另外,我在表 –

+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; 

它會給你從forum_answerspost值,除非沒有一個線程,那麼它只會給你forum_threads

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; 
+1

是的,但這消除了未答覆的線程,我不認爲OP需要。 – 2013-01-03 08:54:17