我正在开发一个分配液体的应用程序。这是数据库的组织
罐:
- canister_id{PK}
- 成分_id{FK}
成分:
- 成分ID{PK}
- 成分名称
喝:
- Drink_id{PK}
- 饮料名称
成分:
- instance_id{PK}
- drink_id{FK}
- 成分_id{FK}
- 数量
每种饮料都有多种成分(保存在成分实例表中),但只有 12 个罐。我正在尝试编写一个 SQL 命令,该命令将收集目前在罐中具有所有必需成分的所有饮料。
到目前为止,这就是我所拥有的。
SELECT DISTINCT Drink.drink_name
FROM Drink, ingredientInstance, Canister
WHERE (((ingredientInstance.drink_id)=[Drink].[drink_id])
AND ((ingredientInstance.ingredient_id)
IN (select ingredient_id FROM Canister)));
然而,这将退回所有含有单一成分的饮料。我正在寻找的是一种方法,以确保对于成分实例中的每个相关成分,它当前都在罐中。
例如,假设drink1需要成分1和成分2 。如果罐中存在这两种成分 ID,我希望它出现在结果中,但如果罐中只有一种或零成分,则不会。
我确定这很明显,但我想不出该怎么做。