我试图设计一个饮料数据库,并需要一些设计方面的帮助。
我创建了下表:成分表列出了所有可能的成分(即朗姆酒,可乐,伏特加和橙汁)。一张饮料表,上面列有所有可能的饮料(即#34;朗姆酒和焦炭",#34;螺丝刀")。最后,食谱表描述了如何制作饮料,所以对于"朗姆酒&焦炭"有两个entires,一个是朗姆酒的成分ID,一个是焦炭的成分ID,两个都是同一个饮料ID的外键。
我想要做的是给出一份可用成分列表id - 1(朗姆酒),2(可乐)和3(伏特加)我想提出一系列可以制作的饮料。所以我可以制作朗姆酒和可乐,但不是螺丝刀,因为我没有橙汁。
关于如何编写这样的select语句或如何更好地设计表的任何建议?
由于
答案 0 :(得分:1)
假设您有3个表:Drinks
,Ingredients
和Recipes
,这是一个Select语句,只会为Drinks
提供Recipes
个Ingredients
所有您给定的Select
d.*
From
Drinks d
Where
not exists
(
select 1
from Recipes r
where r.DrinkId = d.Id and r.IngredientId in (1,2,3)
)
:
{{1}}
答案 1 :(得分:1)
SELECT *
FROM (
SELECT coktail_id,count(ingredient_id) as nb_ingredient
FROM coktail_ingredient
WHERE ingredient_id IN (1,2,3) --where 1 is rhum , 2 is vodka and 3 is coke
group by coktail_id
)
where nb_ingredient = 3--3 for the number of ingredient you need
我使用的技术。