给出下表:
Recipes | id | name | 1 | 'chocolate cream pie' | 2 | 'banana cream pie' | 3 | 'chocolate banana surprise' Ingredients | id | name | 1 | 'banana' | 2 | 'cream' | 3 | 'chocolate' RecipeIngredients | recipe_id | ingredient_id | 1 | 2 | 1 | 3 | 2 | 1 | 2 | 2 | 3 | 1 | 3 | 3
我如何构造一个SQL查询来查找Ingredients.name =’chocolate’和Ingredients.name =’cream’的食谱?
尚未提供的另一种选择是双重NOT EXISTS
SELECT r.id, r.name FROM Recipes r WHERE NOT EXISTS (SELECT * FROM Ingredients i WHERE name IN ('chocolate', 'cream') AND NOT EXISTS (SELECT * FROM RecipeIngredients ri WHERE ri.recipe_id = r.id AND ri.ingredient_id = i.id))