我在'products_items'表中的数据库中列出了一定数量的产品。其中一系列产品与一类产品有关,其名称可在名为“产品”的单独表格中找到。我试图通过{{1}使用PRODUCTID
来确定这些类别的数量这是我的疑问:
JOIN
此处的问题是,包含0和1项的类别都返回值1.但是查询适用于具有< = 2项的任何类别。有没有办法纠正这个计数输出适当的数量?
答案 0 :(得分: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,因为products_items中的产品中有1行组合了whit 0行。
答案 1 :(得分:0)
SELECT ,将()计为itemcount
来自产品p
LEFT JOIN products_items pi
on(PRODUCTID)其中p.PRODUCTID = pi.PRODUCTID
按产品分组
ORDER BY order
ASC,PRODUCTID
ASC“;