2012-07-05 63 views
0

我有一個新聞和news_categories表。新聞表中的news_category_id列。用SQL查詢計數新聞類別

現在我想在頁面中顯示新聞分類列表。所以我寫了一個SQL來查詢:

select count(n.id) as news_count, c.`id`, c.name from news n 
    inner join news_categories c 
    on c.id = n.`news_category_id` 
    group by n.news_category_id 

這似乎工作。但它沒有顯示類別記錄,該類別中沒有新聞。查詢結果只顯示類別記錄,只有相關類別的新聞。

如何使用sigle sql查詢顯示所有類別記錄?

回答

1

使用left outer join而不是inner join

請參閱this great explanation of joins

+1

感謝您的提示。我試了一會兒。實際上它應該在這種情況下使用正確的外連接,並且應該由c.id來分組。 – qichunren 2012-07-05 13:58:15

+1

@qichunren最好習慣左連接,並相應地重新排列表,因爲當你開始在一個複雜的查詢中混合左右連接時,包括你在內的每個人都會花很多時間去閱讀它。 – 2012-07-05 15:34:59