【问题标题】:Drink database design饮料数据库设计
【发布时间】:2011-12-26 14:06:29
【问题描述】:

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

我创建了以下表格:列出所有可能的成分(即朗姆酒、可乐、伏特加和橙汁)的成分表。一张包含所有可能饮料清单的饮料表(即“朗姆酒和可乐”、“螺丝刀”)。最后一个食谱表描述了如何制作饮料,因此对于“朗姆酒和可乐”,有两个整体,一个带有朗姆酒的成分 ID,一个带有可乐成分 ID,两者都具有相同饮料 ID 的外键。

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

关于如何编写这样的选择语句或如何更好地设计表格有什么建议吗?

谢谢

【问题讨论】:

  • 你找到你想要的答案了吗?

标签: sql database


【解决方案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

是我使用的技术。

【讨论】:

    【解决方案2】:

    假设您有 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)
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 2015-04-17
      • 2020-05-15
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多