[英]How get values categories an count products for each category in one query?
[英]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 JOIN
的ON
子句中。 这样,您仍将获得这些类别的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.