2011-12-26 130 views
3

我想設計一個飲料數據庫,需要一些設計幫助。飲料數據庫設計

我創建了以下表格:列出所有可能成分(即朗姆酒,可樂,伏特加和橙汁)的成分表。飲料桌上有所有可能飲料的清單(即「朗姆酒&可樂」,「螺絲刀」)。最後,Recipes表格描述瞭如何製作飲料,因此對於「朗姆酒&可樂」,有兩種成分,一種是朗姆酒的成分ID,一種是可口可樂的成分ID,兩種飲料的外號都是相同的飲料。

我想要做的是給出一個可用的成分id - 1(朗姆酒),2(可樂)和3(伏特加)的列表,我想拿出一個可能的飲料列表。所以我可以做朗姆酒&可樂,但不是螺絲刀,因爲我沒有橙汁。

有關如何編寫這樣的select語句或如何更好地設計表的任何建議?

感謝

+0

您是否找到想要的答案? – everton 2011-12-29 14:21:27

回答

1

假如你有3個表:DrinksIngredientsRecipes,這裏是一個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
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 

是我使用的技術。