这是组内查询的示例。我主张
having为此使用带有子句的聚合:
select drink.drinknamefrom IngredientInstance ii join Drink d on ii.DrinkId = d.Drinkid left join Canister c on ii.IngredientId = c.INgredientIdgroup by drink.drinknamehaving sum(iif(c.IngredientId is null, 1, 0)) = 0;
这是加入
IngredientInstance,
Drink只是为了获得饮料的名称。然后,它正在
leftjoin对
Canister表执行操作。这样可以将饮料中的所有成分以及匹配的成分(如果有)保留在罐中。如果缺少某种成分
Canister,则该成分为NULL
ingredientId。
将
group by在由饮料配料的外观。最后一个
having子句计算缺少的成分的数量,并且只返回没有缺失的成分的饮料。



