0

我在表“products_items”的数据库中列出了一定数量的产品。其中一系列与产品类别相关,其名称可在名为“产品”的单独表中找到。JOIN我试图通过使用 PRODUCTID 将它们与类别一起确定这些计数

这是我的查询:

SELECT *, count(*) as itemcount 
FROM products 
    LEFT JOIN products_items
    USING(PRODUCTID) 
GROUP BY PRODUCTID 
ORDER BY `order` ASC, `PRODUCTID` ASC";

这里的问题是,具有 0 和 1 项的类别都返回值 1。但是,该查询适用于具有 <=2 项的任何类别。有没有办法纠正这个计数以输出正确的数量?

4

2 回答 2

1

如果您指定要计算的内容:

SELECT *, count(products_items.PRODUCTID) as itemcount 
FROM products 
    LEFT JOIN products_items
    USING(PRODUCTID) 
GROUP BY PRODUCTID 
ORDER BY `order` ASC, `PRODUCTID` ASC";

通过告诉 mysql 你想计算 products_items 中的一个字段,如果该产品没有 products_items,它的计数为 0。而 count(*) 给出 1,因为产品中有 1 行与 products_items 中的 0 行相结合。

于 2012-07-05T05:30:04.980 回答
0

SELECT , count( ) as itemcount FROM products p LEFT JOIN products_items pi on (PRODUCTID) where p.PRODUCTID = pi.PRODUCTID GROUP BY PRODUCTID ORDER BY orderASC, PRODUCTIDASC";

于 2012-07-05T05:29:21.143 回答