2012-07-05 58 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