php - 选择具有特定价格范围,产品限制和其他过滤的Mysql数据

php - 选择具有特定价格范围,产品限制和其他过滤的Mysql数据,第1张

我有一个数据库表产品,例如:

id  name     price category
1   pen      70      1
2   banana   50      1
3   potato   10      1
5   apple    20      1
6   guaba    30      1
7   papa     30      2
8   salt     80      2
9   butter   25      2
10  cheese   10      2
11  burger   20      2
12  Mashala  25      2
13  Chuijal  40      3
14  Icecream 20      3
15  Chocolate 35     3

我想根据价格范围,产品限制和类别从mysql数据库中获取产品。 例如:当我想从4类产品的累积价格中获得4类产品中的4种产品时,这4种产品的累计价格将是100或接近100,它将显示来自第1类的任何4种产品,这4种产品的价格将约为100总共。 可能的输出:

id  name     price category
1   pen      10      1
2   banana   50      1
3   potato   10      1
5   apple    20      1
============================
            =90 (near 100)

再次当我想获得3类产品时,这些价格累计为100,它会显示1类产品中的任何3种产品累计价格为100或接近100。

可能出局:

  id  name     price category
    1   pen      70      1
    3   potato   10      1
    5   apple    20      1
============================
                =100

因此,我希望得到不同价格范围和产品限制的不同类别的结果。例如,这些数据是实际数据将是许多项目和许多不同的价格和其他过滤器,如类别过滤。

我感谢专家的帮助!

最佳答案:

1 个答案:

答案 0 :(得分:1)

您可以为每个问题编写单独的查询以获取产品:

select p1.id, p2.id, p3.id, p4.id
from products p1 join
     products p2
     on p1.id < p2.id and p1.category = 1 and p2.category = 1 join
     products p3
     on p2.id < p3.id and p3.category = 1 join
     products p4
     on p3.id < p4.id and p3.category = 1 
order by abs(100 - (p1.price   p2.price   p3.price   p4.price))
limit 1;

这是在进行暴力搜索,生成所有产品组合。它应该可以查找您的数据,但如果您有数千行,则可能需要一段时间。

优化此类搜索不是可以在数据库中完全解决的问题。您可以查看有关背包问题的Wikipedia页面,以便更好地了解它。关于计算复杂性的部分基本上解释了为什么强力方法是目前最着名的优化方法(如果你不理解计算复杂性)。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复