我有一个简单的表结构,但很难搞清楚相应的SQL查询。
表格结构:
Recipe { id (pk), name, description, ... }
Ingredient { recipe_id (fk), ingredient }
我正在试图找出要说的SQL ..“鉴于成分列表,返回至少具有所有指定成分的食谱”
(另一种说法:指定成分是匹配食谱成分的超集)
编辑:可以SELECT r.* FROM Recipe r
而不是成分表吗?
答案 0 :(得分:3)
您可以使用group by
和聚合执行此操作。一种方法是:
select i.recipe_id
from ingredients i
where i.ingredient in (<ingredient 1>, <ingredient 2>, . . .)
group by i.recipe_id
having count(distinct i.ingredient) = <number of ingredients you are looking for>;