我正在开发一个液体分配应用程序。以下是数据库的组织结构:
CANISTER:
- canister_id{PK}
- ingredient_id{FK}
INGREDIENT:
- ingredient_id{PK}
- ingredient_name
DRINK:
- drink_id{PK}
- drink_name
INGREDIENTINSTANCE:
- instance_id{PK}
- drink_id{FK}
- ingredient_id{FK}
- amount
每种饮料都有多种成分(保存在ingredientInstance表中),但只有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)));
然而,这会返回所有即使只有一个可用成分的饮料。我想要的是一种方法,确保对于ingredientInstance中的每个关联成分,它都当前在罐子里。
例如,假设drink1需要ingredient1和ingredient2。如果这两个成分ID都存在于Canisters中,则希望其出现在结果中,但如果只有一个或零个成分在罐子中,则不希望其出现在结果中。
我确定这是显而易见的事情,但我想不出如何做到这一点。