如何使用JOIN和GROUP BY从两个表中计数

时间:2015-10-23 14:49:16

标签: php mysql

我是一个新手并坚持这个案子 我有两张桌子

类别 - CatId - CatName

产品 - ProductId - CatId - ProductName

我想计算在使用计数产品显示类别和使用此查询时的类别中的产品数量

SELECT * , COUNT(Product.ProductId) AS NumberProducts FROM Category
JOIN Product
ON Category.CatId = Product.CatId
GROUP BY Product.CatId

这个查询只是工作,如果我的产品存在与表产品中的catid,如果不是我的类别不会显示在类别列表中,类别将消失。

请帮忙。提前谢谢

2 个答案:

答案 0 :(得分:0)

SELECT * , COUNT(Product.ProductId) AS NumberProducts FROM Category
LEFT JOIN Product
ON Category.CatId = Product.CatId
GROUP BY Product.CatId

左连接应该做的伎俩

答案 1 :(得分:0)

选择*是问题 - 您正在寻找类别和产品数量列表。

你会得到你所要求的。 (c和p是使SQL更具可读性的别名)

SELECT c.*, COUNT(p.ProductId) AS NumberProducts FROM Category as c
LEFT JOIN Product as p
ON c.CatId = p.CatId
GROUP BY c.CatId

可生产

CatId   CategoryName    NumberProducts
1       T-Shirts        2
2       Sneakers        0
3       Boots           0 

希望有所帮助。