首先道歉标题并不是最具描述性的。
我正在使用YII并尝试创建一个股票系统并在cgridview中显示它。但这不是重要的部分。使用两个mysql表products
和stock
我试图根据stock表计算每个产品。这是我的表格。
产品表
股票表
使用以下MySQL我得到了所需的结果。
SELECT p.name, COUNT(s.id) as product_count
FROM products AS p
LEFT JOIN stock AS s ON s.product_id = p.id
WHERE p.stock_method = 1
GROUP BY p.name
请查看结果,因为我们可以看到所有带有0的产品,对于那些没有库存的产品,有库存的商品为8。
问题是库存表代表多个库存位置,因此我还需要添加一个WHERE
子句来查看stock_area_id = 1
,只要我这样做,我只会得到一行计数为8。
任何能够建议需要做什么的人都会非常感激。
作为旁注,我有两种产品类型,例如一个糖果棒,我们购买其中的100种而不关心,当我们出售它们时,QTY只减少一个(即stock_method 2)和一个我目前正在处理,我们购买100部电话,每部都是单独存货,因为我们需要知道谁拿到这部电话,这些是基于连续的个别库存而且是stock_method 1,即总是有1的数量因此他们需要是总结
答案 0 :(得分:0)
我认为在使用HAVING
时,最好使用WHERE
而不是GROUP BY
。
尝试此查询
SELECT p.name, COUNT(s.id) as product_count
FROM products AS p
LEFT JOIN stock AS s ON s.product_id = p.id
GROUP BY p.name
HAVING p.stock_method = 1 AND stock_area_id = 1
答案 1 :(得分:-1)
不幸的是我从来没有找到解决方案。我最终通过改变数据库设计获得了我所需要的东西,因为当前的设计使许多事情变得困难。