编辑:
有人告诉我,让你们阅读意味着我得到的关注较少。我很抱歉。这是一个更简单的版本:
比尔从一家商店买了值(value) 100 美元的元素。
他想退回足够多的元素,正好能收回 30 美元。
这家商店有一个返回点系统可以帮助他做到这一点。
这是他扫描元素后的数据:
item ¦ price ¦
socks 4.00
cheap tv 22.00
book on tape 9.00
book on paper 7.00
party hats 3.00
picture frame 10.00
hammer 5.00
juicer 16.00
mysql guide 24.00
total items ¦ total price ¦
9 100.00
Option 1
===============
item ¦ price ¦
cheap tv 22.00
party hats 3.00
hammer 5.00
===============
Option 2
===============
item ¦ price ¦
socks 4.00
picture frame 10.00
juicer 16.00
===============
Option 3
===============
item ¦ price ¦
book on tape 9.00
hammer 5.00
juicer 16.00
我可能错过了一些选项,因为所有这些都是我编的。
所以,最大的问题是:
有没有一种方法(可能是 GROUP BY)让一个查询返回所有可能的项目组合?
谢谢!
一个
最佳答案
您要求的所有子集的总和恰好为 30 美元。
这听起来很像 subset sum problem , 和 knapsack problem ,所以我强烈怀疑你可以用一个简单的查询来做到这一点。您可能不得不求助于 T-SQL,但即使那样也可能看起来很难看。
我认为编程是通往这里的道路。
关于sql - MySQL 查找小计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/397384/