代码之家  ›  专栏  ›  技术社区  ›  notGeek

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

  •  0
  • notGeek  · 技术社区  · 7 年前

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

    代码:

    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
    

    1 回复  |  直到 7 年前
        1
  •  2
  •   Nick SamSmith1986    7 年前

    去除 WHERE p.active=1 对于没有产品的任何类别(导致查询不返回这些类别的行),它将失败,并将该条件移动到 ON 条款 LEFT JOIN 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 .