MySQL - 产品数量未显示所有结果的类别
MySQL - category with product count not showing all results
我正在尝试在类别列表中显示产品数量和类别名称。
我可以通过 JOIN 实现此目的,但并未显示所有类别。
我的意思是没有显示有 0 个产品的类别,但是我将 JOIN 更改为 LEFT JOIN,它只显示一个类别有 0 个产品。
还有两个。
SELECT c.id
, c.name
, count( p.category_id ) product_count
FROM category c
LEFT
JOIN products p
ON c.id = p.category_id
GROUP
BY p.category_id
这是我要执行的查询。
有知道的请指教
使用这个组语句:
GROUP BY c.id
您的查询应该会失败,因为 GROUP BY
子句与 SELECT
列不一致 -- c.id
与 p.category_id
不同。 (旧版本的 MySQL 确实接受这种语法。)
当没有匹配项时,您正在按具有 NULL
值的列进行聚合。您确实希望按 category
table 中的列进行聚合。我会推荐:
SELECT c.id, c.name , count( p.category_id ) AS product_count
FROM category c LEFT JOIN
products p
ON c.id = p.category_id
GROUP BY c.id, c.name;
请注意,GROUP BY
列与未聚合的 SELECT
列匹配。另外,as id
和 as name
是多余的,所以我删除了它们。
SELECT c.id AS id, c.name AS name, count( p.category_id ) AS product_count FROM category c
LEFT JOIN 产品 p ON c.id = p.category_id
分组依据(c.id)
我正在尝试在类别列表中显示产品数量和类别名称。
我可以通过 JOIN 实现此目的,但并未显示所有类别。
我的意思是没有显示有 0 个产品的类别,但是我将 JOIN 更改为 LEFT JOIN,它只显示一个类别有 0 个产品。 还有两个。
SELECT c.id
, c.name
, count( p.category_id ) product_count
FROM category c
LEFT
JOIN products p
ON c.id = p.category_id
GROUP
BY p.category_id
这是我要执行的查询。
有知道的请指教
使用这个组语句:
GROUP BY c.id
您的查询应该会失败,因为 GROUP BY
子句与 SELECT
列不一致 -- c.id
与 p.category_id
不同。 (旧版本的 MySQL 确实接受这种语法。)
当没有匹配项时,您正在按具有 NULL
值的列进行聚合。您确实希望按 category
table 中的列进行聚合。我会推荐:
SELECT c.id, c.name , count( p.category_id ) AS product_count
FROM category c LEFT JOIN
products p
ON c.id = p.category_id
GROUP BY c.id, c.name;
请注意,GROUP BY
列与未聚合的 SELECT
列匹配。另外,as id
和 as name
是多余的,所以我删除了它们。
SELECT c.id AS id, c.name AS name, count( p.category_id ) AS product_count FROM category c LEFT JOIN 产品 p ON c.id = p.category_id 分组依据(c.id)