如果有一餐,SQL测试21种组合

时间:2015-09-29 14:52:36

标签: sql sql-server database

我目前有一个为患者分配膳食的计划。然而,患者可以进行窗帘饮食。如果由于饮食而不允许分配的膳食,它会自动被替代膳食取代。

所以数据库会是这样的:

  • Diet表:Diet_id,Diet_Name
  • Replacement表:meal_id,replacement_id,Diet_id

我想要做的是在SQL Server中编写一个查询,看看是否每个饮食组合都有替代品。

例如:

A,B
A,C
A,B,C
A,B,X
A,B,C,X
A,B,...,X

因此,如果ID为1的饮食无法替代A,B,C组合,我希望结果返回失败的meal_id和饮食组合。

我目前有21种不同的饮食,这是事实(21)的组合。迭代太多了。是否可以选择测试所有组合?

一些数据: https://dl.dropboxusercontent.com/u/3949922/diets.txt

1 个答案:

答案 0 :(得分:1)

要获取ID:

Select diet_id from Diet
except
Select diet_id from Replacement