显示有帖子数量的类别

问题描述:

我在做博客。我有两张桌子,一张为posts,另一张为categories显示有帖子数量的类别

我想显示每个类别中的类别名称,类别日期和帖子数量。我有问题要显示每个类别的帖子数量。 在posts表我有一个名为cat_id列等于category.id

我有这2个MySQL查询:

mysql_query("select Count(posts.id) as NumberOfPosts, cat_id from posts group by cat_id"); 

而且

mysql_query("select name, date from categories"); 

我不知道如何有结合将这两个查询合并为一个查询。我使用PHP。

+0

来吧。需要更多努力。 – Strawberry

你可以使用一个join

SELECT name, date, NumberOfPosts 
FROM categories c 
JOIN (SELECT cat_id, COUNT(*) AS NumberOfPosts 
     FROM  posts 
     GROUP BY cat_id) p ON c.id = p.cat_id 

编辑:
要包括类别,有没有职位,你可以使用一个left join代替普通join。你只需要使用​​3210处理null是你会得到了NumberOfPosts,例如:

SELECT  name, date, COALESCE(NumberOfPosts, 0) AS NumberOfPosts 
FROM  categories c 
LEFT JOIN (SELECT cat_id, COUNT(*) AS NumberOfPosts 
      FROM  posts 
      GROUP BY cat_id) p ON c.id = p.cat_id 
+0

以及如何回显cat_id和NumberOfposts? – user3740970

+0

非常感谢。这是工作,我只需要在查询的开头添加一个'id' - 然后查询看起来像这样:SELECT ID,name,date,NumberOfPosts FROM categories c JOIN(SELECT cat_id,COUNT(*)AS NumberOfPosts FROM posts GROUP BY cat_id)p ON c.id = p.cat_id – user3740970

+0

但是,该查询仅显示包含帖子的类别。如果某个类别刚刚添加并且有0个帖子,该怎么办?有什么方法可以显示它们吗? – user3740970