Php 使用库存控制的Mysql查询
首先,抱歉,标题并不是最具描述性的。 我正在使用YII,试图创建一个股票系统,并在cgridview中显示它。但这不是重要的部分。使用两个mysql表products和stock,我试图根据stock表对每个产品进行计数。这是我的桌子 产品表 库存表 使用下面的MySQL,我得到了期望的结果Php 使用库存控制的Mysql查询,php,mysql,yii,Php,Mysql,Yii,首先,抱歉,标题并不是最具描述性的。 我正在使用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 =
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
问题是stock表表示多个stock位置,因此我还需要添加一个WHERE子句,以便只查找stock\u area\u id=1,一旦这样做,我只会得到一个计数为8的单行。
如果有人能提出需要做什么的建议,我将不胜感激
作为旁注,我有两种产品类型,一种是糖果,我们买了100个,当我们出售它们时并不在意,数量只是减少了一个ie stock_方法2和我目前正在处理的一个,我们买了100部手机,每一部都是单独储存的,因为我们需要知道谁会得到这部手机,这些是基于序列的单独库存,并且是库存方法1,即数量始终为1,因此需要对其进行汇总。我认为使用have比使用WHERE while 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
不幸的是,我从来没有找到解决这个问题的办法。我最终通过改变数据库设计得到了我所需要的,因为当前的设计使很多事情变得困难 你知道HAVING做了什么吗?使用HAVING而不是WHERE..这是正确的方法吗?这似乎导致了一行显示的问题。问题是stock表表示多个库存位置,是否要将搜索限制在该位置?!是的,我只想要库存区域id为1的库存