2011-01-11 69 views

回答

1

您想要使用INNER JOIN。

SELECT 
    article.*, 
    comment.* 
FROM 
    article 
INNER JOIN 
    comment 
ON 
    comment.article_id = article.id 

這會給你的冗餘數據(多行同一篇文章中的數據),但只有一個sql語句/到數據庫的連接。

+0

啊,我明白了。我認爲冗餘數據的想法是什麼讓我失望,讓我覺得必須有另一種解決方案。我想從長遠來看,這不是一筆大交易。謝謝梅西! – Ryan 2011-01-11 06:49:55

3

這是沒有絕對的對或錯,join將返回更大的數據集,但可以在一個查詢得到的一切

取決於你的需求,如果你只需要評論數+單註解的ID(供以後使用),考慮使用GROUP_CONCAT

select 
    article.*, 
    group_concat(comment.id) as comments, 
    count(comment.id) as comments_count 
from 
    article 
left join comment 
on comment.article_id=article_id 
group by article.id; 

列的意見將包含所有評論的ID,併爲每篇文章的評論comments_count回數

PS:我覺得左加入更合適

+0

雖然這是一個非常有用的函數,但如果我需要的不僅僅是Id或count(在我的情況中,我是這樣做的),那麼我只剩下連接選項了,對嗎? – Ryan 2011-01-11 07:28:49

相關問題