饮料数据库设计

3
我正在尝试设计一个饮料数据库,需要设计方面的帮助。我创建了以下表格:一个成分表格列出所有可能的成分(例如朗姆酒、可乐、伏特加和橙汁)。一个饮料表格列出所有可能的饮料(例如"朗姆可乐"、"伏特加橙汁")。最后一个配方表格描述如何制作饮料,因此对于"朗姆可乐",有两个条目,一个用于成分ID为朗姆酒,另一个用于成分ID为可乐,两者都具有指向相同饮料ID的外键。
我的目标是给定可用成分ID-1(朗姆酒)、2(可乐)和3(伏特加)的列表,我想列出可以制作的饮料清单。因此,我可以制作朗姆可乐,但不能制作伏特加橙汁,因为没有橙汁。
请问如何编写这样的选择语句或如何更好地设计表格?谢谢。

你找到想要的答案了吗? - everton
2个回答

1
假设您有三个表: DrinksIngredientsRecipes,这里是一个Select语句,它将只给出具有所有给定IngredientsRecipesDrinks
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

这是我使用的技术。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接