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.idp.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 idas 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)