我有一张桌子可以容纳物品和他们的重量"它看起来像这样:
items
-----
id weight
---------- ----------
1 1
2 5
3 2
4 9
5 8
6 4
7 1
8 2
我想要获得的是一个总和(权重)正好是X的组,同时遵守插入的顺序。
例如,如果我在寻找X = 3,那么应该返回:
id weight
---------- ----------
1 1
3 2
尽管ids 7和8的总和也是3。
或者,如果我正在寻找X = 7应该返回
id weight
---------- ----------
2 5
3 2
尽管ids 1,3和6的总和也是7。
我有点迷失在这个问题中并且没有能够提出至少做类似事情的查询,但是考虑到这个问题,RDBMS可能变得非常复杂处理。这可以通过查询来完成吗?如果没有,我可以查询数据库以获得最少量数据的最佳方式是什么?
编辑:正如第十二所说的那样,我需要返回总和,无论它返回多少行,所以如果我要求X = 20,我应该得到:
id weight
---------- ----------
1 1
3 2
4 9
5 8
答案 0 :(得分:1)
这可能在sql中变得非常困难。你要做的是解决knapsack problem,这是非平凡的。
从计算机科学的角度来看,背包问题很有意思,原因很多: