喝数据库设计

时间:2011-12-26 14:06:30

标签: sql database

我试图设计一个饮料数据库,并需要一些设计方面的帮助。

我创建了下表:成分表列出了所有可能的成分(即朗姆酒,可乐,伏特加和橙汁)。一张饮料表,上面列有所有可能的饮料(即#34;朗姆酒和焦炭",#34;螺丝刀")。最后,食谱表描述了如何制作饮料,所以对于"朗姆酒&焦炭"有两个entires,一个是朗姆酒的成分ID,一个是焦炭的成分ID,两个都是同一个饮料ID的外键。

我想要做的是给出一份可用成分列表id - 1(朗姆酒),2(可乐)和3(伏特加)我想提出一系列可以制作的饮料。所以我可以制作朗姆酒和可乐,但不是螺丝刀,因为我没有橙汁。

关于如何编写这样的select语句或如何更好地设计表的任何建议?

由于

2 个答案:

答案 0 :(得分:1)

假设您有3个表:DrinksIngredientsRecipes,这是一个Select语句,只会为Drinks提供RecipesIngredients 所有您给定的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

我使用的技术。