我想在mysql中使用DSS在我的数据库中加总所有价格

时间:2015-02-04 13:21:58

标签: php mysql

这是我的问题:

例如:

用户输入:2000作为预期预算

用户选择婚礼作为所需的服务类型

根据预算,可以提供哪些服务组合?

我的初步查询是:

Select price,service_inclusion, 
           soid, servicetype 
      FROM service_offer where servicetype='Wedding' and SUM(price) = 2000 

以下是我数据库中的数据。

ID   Service_type     Price
1    Wedding           500 
2    Wedding           700      
3    Wedding          1000
4    Wedding           300 
5    Wedding          1000

这就是结果 要么:

4    Wedding  300
2    Wedding  700
3    Wedding  1000

或者

3   Wedding   1000
5   Wedding   1000

或者我可以随机使用它。我可以在查询中创建它还是我可以在php代码中完成它?

2 个答案:

答案 0 :(得分:1)

如果我理解正确的话。您希望查询返回所有可能的服务类型为“婚礼”的项目组合,这些项目将累计到您的预算中。

这是一个难题,基本上是bin packing problem

的变体

一种简单的方法可能是获取与“婚礼”匹配的项目的所有值,并开始从剩余预算中减去它们,直到达到0(或接近0)。

您可以从少量开始,在预算中获得更多“服务”,或从大量资金开始只提供少量服务。

可能在SQL中执行此操作,但不推荐使用。

答案 1 :(得分:0)

@jayboune - 我同意Loopo。这并不是一个容易解决的问题,因为你想要考虑所有可能的组合(假设你总是包括“婚礼”)。每次将新服务添加到数据库并使其可用时,处理要求(内存,时间等)都会增加。

可能更简单的选择(以及更好的客户体验)是向客户提供可用服务(包括价格),并在他们选择所需服务时在他们正在使用的页面上保持运行总计。只提供成本低于剩余预算的服务将使客户更多地考虑他们真正想要的东西。

使用此方法意味着选择事物的时间延迟将远远超过任何处理延迟。而且,从客户的角度来看,在真正开始做事之前不会有很长的延迟