我有一个MySQL数据库,其中包含2个表,称为mutaties和产品
例如,在 mutaties 中,您有一个 product_id(对应于产品数据库中的产品 ID。
所以我们现在使用 SUM(aantal( 从 mutaties 数据库中获取当前库存。
产品表具有每个产品的阈值。
我现在要做的是设置一个 mysql 查询,该查询获取当前库存低于阈值的每个产品。
现在我有这个:
SELECT *
FROM products
, mutaties
WHERE SUM(aantal) < threshold
但是我得到错误无效使用组函数。
最好的方法是什么?
这是我的产品表: 在此处输入图像描述
列的转换是id,品牌,型号,阈值
这是我的mutaties数据库: 在此处输入图像描述 这是列的变种表翻译:ID product_id数量日期说明
就像 jarlh 在那条评论中写的那样,您可能应该使用现代JOIN
语法。 因此,这样的事情应该有效:
select p.id, sum(m.aantal) as aantalsum
from products as p
join mutaties as m on (m.product_id = p.id)
group by p.id, p.threshold
having sum(m.aantal) < p.threshold
注意事项:
- 如果您有没有
mutaties
products
,它们将不会出现在该选择中。如果需要这些,请改用left outer join
。 - 您的
threshold
为 0 的products
,它们也可能根本不会出现。 - 如果选择列表中需要更多列,则还需要将它们添加到
group by
表达式中