我试图从表中选择三个随机行,其中组合的item_price列小于所需的量.
想象一下,你有一个< input>一美元金额.输入美元金额时,数据库会返回三个随机项,其中组合价格小于或等于您输入的金额.
如果我输入300美元,你可以购买这三件商品,150美元,100美元和50美元.我在创建一个将返回符合此条件的三个项目的查询时遇到困难.
SELECT t1.item_id, t1.item_price
FROM items t1
INNER JOIN items t2 ON ( t1.item_id = t2.item_id )
GROUP BY t1.item_id, t1.item_name, t1.item_price
HAVING SUM( t2.item_price ) <=300
ORDER BY RAND( )
LIMIT 3
我认为这会奏效,但我认为这只是一个巧合.它似乎只返回价格低于300美元,而不是总价不到300美元的任何三件物品.
我也试过这个查询:
SELECT t1.item_id, t1.item_price
FROM items t1
JOIN items t2 ON t2.item_id <= t1.item_id
WHERE t2.item_price <= 500
GROUP BY t1.item_id
HAVING SUM(t2.item_price) <= 500
ORDER BY RAND()
LIMIT 3
再次,似乎最初工作,但后来它开始返回2000美元的项目.
如果在PHP中有更好的(甚至牺牲性能)方式,我不介意.我只是觉得查询不会那么困难.
一如既往,感谢任何人的帮助.