首先,抱歉,标题并不是最具描述性的。我正在使用YII并试图创建一个股票系统,并在cgridview中显示这一点。但这并不是最重要的部分。使用两个mysql表products和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只是减少了1(即stock_method 2),而我目前正在处理的一种产品,我们购买了100部手机,每一部都是单独储存的,因为我们需要知道谁得到了这款手机,这些都是根据系列单独储存的,而且stock_method 1--即总质量为1,因此需要进行汇总。
发布于 2014-09-12 08:44:02
不幸的是,我一直没有找到解决办法。我最终通过更改数据库设计得到了我所需要的,因为当前的设计使许多事情变得很困难。
发布于 2014-08-06 08:40:43
我认为最好是使用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 = 1https://stackoverflow.com/questions/25155704
复制相似问题