使用Stock Control的Mysql查询

时间:2014-08-06 08:35:26

标签: php mysql yii

首先道歉标题并不是最具描述性的。 我正在使用YII并尝试创建一个股票系统并在cgridview中显示它。但这不是重要的部分。使用两个mysql表productsstock我试图根据stock表计算每个产品。这是我的表格。

产品表 enter image description here

股票表

enter image description here

使用以下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。

enter image description here

问题是库存表代表多个库存位置,因此我还需要添加一个WHERE子句来查看stock_area_id = 1,只要我这样做,我只会得到一行计数为8。 任何能够建议需要做什么的人都会非常感激。

作为旁注,我有两种产品类型,例如一个糖果棒,我们购买其中的100种而不关心,当我们出售它们时,QTY只减少一个(即stock_method 2)和一个我目前正在处理,我们购买100部电话,每部都是单独存货,因为我们需要知道谁拿到这部电话,这些是基于连续的个别库存而且是stock_method 1,即总是有1的数量因此他们需要是总结

2 个答案:

答案 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)

不幸的是我从来没有找到解决方案。我最终通过改变数据库设计获得了我所需要的东西,因为当前的设计使许多事情变得困难。