我有以下SQL图:月饼的总和
Category:
id_category
category_name
Measurement
id_measurement
name_measurement
Ingredient
id_ingredient
name_ingredient
category_id
measurement_id
nrOfCal
IngredientCake
id_ingredient
cake_code
quantities
Cake
cake_code
cake_name
我不知道如何显示有少于500个卡路里的所有代码和名称蛋糕。 我已经试过什么:
select [Cake].cake_code , [Cake].cake_name
from [Cake]
inner join [Ingredient_Cake]
on ([Cake].cake_code = [Ingredient_Cake].cake_code)
inner join [Ingredient]
on ([Ingredient_Cake].id_ingredient = [Ingredient].id_ingredient)
where sum([Ingredient].nrOfCal) < 500
group by [Cake].cake_code;
但无论如何,它给我的错误:
An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
任何解决方案?
编辑:
select [Cake].cake_code,
[Cake].cake_name
from [Cake]
inner join [Ingredient_Cake]
on ([Cake].cake_code = [Ingredient_Cake].cake_code)
inner join [Ingredient]
on ([Ingredient_Cake].id_ingredient = [Ingredient].id_ingredient)
group by [Cake].cake_code, [Cake].cake_name
having sum(nrOfCal*quantities) > 500;
我已经编辑现在有趣的是,如果我让这样的说法,它返回我应该如何,低于500与热量的蛋糕,但条件是现在(> 500),如果我将条件更改为< 500,它只会返回超过500卡路里的蛋糕。这是怎么回事?
尝试将其移动到'having'子句 – McNets