繁体   English   中英

SQL查询以获取每个类别的产品数

[英]SQL query to get number of products for each category

我有一个电子商务商店的数据库。 我想知道每个类别的有效产品数量。

为此的代码:

SELECT c.id_category, COUNT(cp.id_product) AS nproducts
FROM ps_category AS c
LEFT JOIN ps_category_product AS cp ON cp.id_category=c.id_category
LEFT JOIN ps_product AS p ON p.id_product=cp.id_product
WHERE p.active=1
GROUP BY c.id_category 
ORDER BY nproducts ASC

但是,它没有显示具有0个产品的类别。 我想念什么?

删除WHERE p.active=1 ,对于没有产品的任何类别都将失败(导致查询不为这些类别返回任何行),并将该条件移到该LEFT JOINON子句中。 这样,您仍将获得这些类别的NULL行,这将使它们显示为具有0个产品。

SELECT c.id_category, COUNT(p.id_product) AS nproducts
FROM ps_category AS c
LEFT JOIN ps_category_product AS cp ON cp.id_category=c.id_category
LEFT JOIN ps_product AS p ON p.id_product=cp.id_product AND p.active=1
GROUP BY c.id_category 
ORDER BY nproducts ASC

请注意,要确保只计算有效产品,您需要计算p.id_product而不是cp.id_product

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM