2010-12-20 122 views
0

我一直在研究這一整天,而且我認爲我的大腦現在不能正常工作。將3個查詢鏈接在一起

我有3個表中的所有 「鏈接」 在一起:
板表有:
- board_id
- board_name

主題表有:
- topic_id
- topic_board_link(鏈接到一個board_id)

帖子表有:
- post_time
- post_parent(鏈接到頂部ic)

本質上,我希望它顯示董事會,所選董事會的最後一個主題,以及該主題中的最後一篇文章。到目前爲止,與我的一半運轉的大腦,我已經(不工作,因爲max_topic沒有在最後定義,它只返回1行):

SELECT 
    b.board_name, 
    MAX(t.topic_id) as max_topic, 
    MAX(p.post_id) as max_post 
FROM board_list b 
    INNER JOIN (topic_list t, post_list p) 
    ON t.topic_board_link=b.board_id AND p.post_id=max_topic 

有沒有一種方法,我可以做這不需要大量的子查詢?

回答

0

last_topic_id添加到boards表和last_post_idtopics表。

在這種情況下,您將有簡單而快速的查詢,將返回所有你想要的。

+0

我想過這個,但是主題和帖子往往會很快被刪除,而且我有一種感覺,從長遠來看,某些東西不可避免地會變得混亂起來。 – 2010-12-20 06:57:35

+0

@kevin:刪除和維護此引用是** MUCH CHEAPER **任務,而不是使用子查詢進行選擇。您可以使用觸發器自動維護它們。 – zerkms 2010-12-20 07:51:21

+0

呃,好吧。那麼我會這樣做。觸發器究竟是什麼意思? – 2010-12-20 07:57:14