【发布时间】:2013-03-13 14:18:48
【问题描述】:
如果我有一个可以被视为食谱数据库的数据库,我如何选择可以使用给定成分制作的食谱的所有 ID,例如,如果我有成分 1 和 4,它将返回 3是我唯一能用它做的食谱。
将有大约 50 种成分和更多食谱。
我看到了几种可能性,例如使用 UNION/多个连接,......但我没有看到解决这个问题的直接简单的解决方案。
Recipes Recipes/Ingredients Ingredients
1 1 1 1
2 1 2 2
3 2 1 3
2 3 4
2 4
3 1
3 4
编辑/
我想到的解决方法:
select recipe_id from Recipes
where recipe_id in (
select recipe_id from Recipes_Ingredients where ingredient_Id = 1
UNION
select recipe_id from Recipes_Ingredients where ingredient_Id = 4
)
这将导致很长的查询,因为我的数据库实际上并不是关于成分,而是关于其中可能包含 50 种或更多此类东西的东西。
【问题讨论】:
-
@Aarolama Bluenk 我已经搜索过了,我将能够用 UNION 语句解决这个问题。我认为这不是最好的解决方案,到目前为止我还没有找到更好的方法,这就是为什么我认为有这方面日常经验的人能够给出一个直截了当的答案。我不希望有查询或其他什么,只是处理此类查询的适当方法。
-
@J.Maes 在我看来,您需要展示您尝试过的内容。如果您不这样做,那么我们能做的最好的事情就是为您指明如何去做。我们不写代码。
-
@J. Maes - 你考虑过加入表格吗?
标签: sql