1

我有 3 张桌子:食谱、配料表和配料。

我想选择所有不包含任何肉类成分的食谱的名称。

食谱和配料表有一个recipeid属性,配料表和配料表有一个ingredientid属性。

如果ingredientlist.ingredientid包含任何条目ingredient="meat",我想排除recipe.name与该条目相关的所有条目ingredientid

我不知道怎么写,但这是我的选择:

SELECT recipe.name FROM recipe
INNER JOIN ingredientlist ON recipe.recipeid = ingredientlist.recipeid
INNER JOIN ingredients ON ingredientlist.ingredientid = ingredients.ingredientid
WHERE NOT ingredients.type="beef"
GROUP BY recipe.name;
4

1 回答 1

0

这应该有效:

SELECT *
FROM Recipe R
WHERE NOT EXISTS (  SELECT * FROM IngredientList IL
                    INNER JOIN Ingredients I
                        ON I.ingredientid = IL.ingredientid
                    WHERE IL.RecipeId = R.RecipeId
                    AND I.type = 'beef')
于 2013-02-06T18:59:51.137 回答