【发布时间】:2015-06-08 11:29:38
【问题描述】:
是否可以在 MySQLi 查询参数中设置以下内容:
例如:我有一个产品表,其中包含不同价格的各种产品
表格:产品
id name price
1 pen 10
2 banana 50
3 potato 10
5 apple 20
6 guaba 30
7 papa 30
8 salt 80
9 butter 25
10 cheese 10
我想在 MySQLi 语句中限制价格范围和产品范围。
例如:当我想展示 5 个价格累积到 100 或接近 100 的产品时,它将从数据库中获取价格累积到 100 的任何 5 个产品。
再次,当我想显示 2 个价格累积到 100 或接近 100 的产品时,它将获取价格匹配到累积 100 或接近 100 的任何两个产品。
我了解到可以通过以下方式制作价格范围;但我不确定我是否也可以限制这些价格范围内的产品数量。
对于价格范围;我可以这样做:
SELECT id, name, price
FROM (
SELECT id, name, price,
@cumSum:= @cumSum + price AS cumSum
FROM products, (SELECT @cumSum:=0) var
ORDER BY id ) t
WHERE cumSum <= 100
但是如何限制价格范围内的产品数量?
【问题讨论】:
-
您想要任何五种产品还是按 id 排序?
-
产品的价格是否可能高于查询参数?在这种情况下:
cumSum在您的查询中。 -
order by 可以是任何东西,id 或 price。只需要产品限制的逻辑,升序或降序都没有问题。只需要指定产品数量和累计价格范围
-
如果用户需要展示5个累计价格40或接近40的产品怎么办?因为你没有价格低于 10 的产品?
-
sql 和 php 两者。实际上,我不知道使用 sql 来解决这个问题。但是,php 会,有很多代码。我将此标记为收藏,如果我有线索会回来的。因为我也需要这个..