ことで私は、次の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.
任意のソリューション?
EDIT:
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