显示有帖子数量的类别
我在做博客。我有两张桌子,一张为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。
你可以使用一个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
以及如何回显cat_id和NumberOfposts? – user3740970
非常感谢。这是工作,我只需要在查询的开头添加一个'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个帖子,该怎么办?有什么方法可以显示它们吗? – user3740970
来吧。需要更多努力。 – Strawberry