加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:27:24 所属栏目:MsSql教程 来源:网络整理
导读:我有一个SQL查询让我难过.基本上,我有一个食谱表,包含(你毫无疑问,猜测)许多食谱.我有一个成分表,其中包含各种成分.我有一个RecipeIngredients表,它将食谱与它使用的成分联系起来.最后,我有一个PopularIngredients表(它实际上是一个视图,但谁关心?),其中包含
我有一个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
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读