ich die folgende SQL-Diagramm haben:Alle Kuchen kleiner als Gruppe durch Summe
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
Ich weiß nicht, wie die alle Code und Name Kuchen anzuzeigen, die weniger als 500 Kalorien haben. Was ich versucht habe:
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;
aber trotzdem gibt es mir die Fehlermeldung:
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.
Jede Lösung?
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;
Ich habe bearbeitet und jetzt der lustige Teil ist, dass, wenn ich es so lassen, gibt sie mir, wie sollte es die Kuchen mit den Kalorien, weniger als 500, aber die Bedingung ist jetzt (> 500), und wenn ich die Bedingung zu < 500 ändere, gibt es mir nur den Kuchen zurück, der mehr als 500 Kalorien hat. Was ist los?
versuchen, indem Sie es auf die 'haben'-Klausel – McNets