sql – 只用牛奶,鸡蛋,黄油,面粉,糖和盐可以制作多少食谱?

前端之家收集整理的这篇文章主要介绍了sql – 只用牛奶,鸡蛋,黄油,面粉,糖和盐可以制作多少食谱?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个SQL查询让我难过.基本上,我有一个食谱表,包含(你毫无疑问,猜测)许多食谱.我有一个成分表,其中包含各种成分.我有一个RecipeIngredients表,它将食谱与它使用的成分联系起来.最后,我有一个PopularIngredients表(它实际上是一个视图,但谁关心?),其中包含人们可能在厨房中最常用的成分:
CREATE Table Recipes
(
  RecipeId int4,Title varchar(100)
);

CREATE Table Ingredients
(
  IngredientId int4,Name varchar(100)
);

CREATE Table RecipeIngredients
(
  RecipeId int4,IngredientId int4,Amount int2
);

CREATE Table PopularIngredients
(
  IngredientId int4
);

我的目标是获得仅使用流行成分的所有食谱清单.

可以在here找到带有示例数据的sql小提琴.

我正在寻找的是一个将返回鸡肉沙拉和煎饼的查询. Aligator Burgers不会退货,因为它使用的aligator不是一种流行的成分.

我尝试了一些涉及子选择和ALL关键字的事情,但没有运气.我已经尝试了各种内部和外部连接,但只要其中至少有一种成分受欢迎,配方行仍然会出现.任何帮助将非常感激!

我正在使用Postgres 9.1.

解决方法

这将获得所有没有不在PopularIngredients表中的成分的食谱.
select * from Recipes r where not exists (
  select * from RecipeIngredients ri 
  left join PopularIngredients pi on pi.IngredientId=ri.IngredientId
  where ri.RecipeId=r.RecipeId and pi.IngredientId is null
)

猜你在找的MsSQL相关文章