作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个难倒我的 SQL 查询。基本上,我有一个 Recipes
表,其中包含(您肯定猜到了)许多食谱。我有一个 Ingredients
表,其中包含各种成分。我有一个 RecipeIngredients
表,将食谱链接到它使用的成分。最后,我有一个 PopularIngredients
表(它实际上是一个 View ,但谁在乎呢?),其中包含人们厨房中可能拥有的最受欢迎的食材:
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
);
我的目标是获取所有使用仅流行成分的食谱的列表。
可以找到带有示例数据的 SQL Fiddle here .
我要查找的是将返回鸡肉沙拉 和煎饼 的查询。 鳄鱼汉堡不会被退回,因为它使用鳄鱼,这不是一种流行的成分。
我尝试了一些涉及子选择和 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
)
关于sql - 仅用牛奶、鸡蛋、黄油、面粉、糖和盐,您能做出多少种食谱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979195/
我是一名优秀的程序员,十分优秀!