示例:
select orderid
from `orders`
where sum(price) <= 150 and status=unpaid and ownerid=110786
但它不起作用。
详情: 我想查找来自客户(ownerid)的所有订单,其状态为UNPAID,最高为(价格)150。
这是必需的,因为我希望允许客户从可用资金中支付尽可能多的订单。
对于ANSWER No.1 可能会按预期工作,但代码中有一些错误,因为它没有生成所需的结果,当我还添加TotalSoFar以查看值是否正常时,所有行都在此字段中显示其双倍价格而不是最后一列价格+当前列价格值。我不确定我的细节是否有意义,但我只是想说明mysql正在撤回的结果:)
对于答案2 你写了状态而不是paymentstatus所以结果是空白但当我纠正并运行以下查询:
从订单中选择orderid,price,designname,其中paymentstatus ='unpaid',ownerid = 110786 group by orderid,总和(价格)&lt; = 50
RESULT SHOWN IS:
orderid price designname
114279 15 Premier Academy
114280 10 Troop
114386 15 Texas Tennis
114408 20 Nokia Developer
114508 15 Gold Lighthouse
因为你可以看到价格总计不到50美元但是75美元。请帮助...谢谢!
另外Mods请注意stackoverflow是一个很棒的服务,但格式化评论是一项非常艰巨的工作。请以某种方式轻松一点。我尝试了很多次来格式化评论,以便可以轻松阅读,但所有努力都失败了所以现在我正在回答我的问题区域写评论
但是,到目前为止,这个问题没有得到正确回答。虽然好人正在尽力帮助我。我再次重新发布了这个问题,因为太长时间没有人提供可行的解决方案,但新问题也没有得到解决方案的解决方案:)
请伙计们以某种方式帮助我。我想要做的是所有推车以某种方式做的一般事情。如果一个客户有10个订单,每个10美元,总计100美元,但他只有50美元。他如何检查这笔金额可以支付多少订单?这就是我需要查找/编码的全部内容。
答案 0 :(得分:1)
我认为你可以用MySQL变量完成这个...使用一个作为一个运行总计并应用一个HAVING子句来切断它......
select
o.orderid,
o.price,
@RunningTotal := @RunningTotal + o.price as TotalSoFar
from
orders o,
( select @RunningTotal := 0 ) sqlvars
where
o.ownerid = 110786
and o.status = unpaid
having
TotalSoFar <= 150
@RunningTotal变量只是不断添加到“即时”中并且卡在查询结果的最后一列中,但仍然只是用于限定WHERE子句的下一条记录的变量。因此,即使您的订单总数高达200,300,无论如何,最终的HAVING子句将通过使用“TotalSoFar”列作为基础来删除所有其他行...
答案 1 :(得分:0)
目前还不清楚你是否收到错误,但试试这个:
select orderid
from `orders`
where status=unpaid and ownerid=110786
group by orderid
having sum(price) <= 150