我有一个 SQL 数据库,我希望在满足客户要求的数量之前获取记录。这就是我的意思。请求表
Product Quantity Price
-----------------------
Apple 10.0 5.00
这是获取匹配项的 SQL 查询:
SELECT c.FName,
p.ProductName,
s.Description,
s.Quantity,
s.Price
FROM requests r
INNER JOIN sellers s
ON r.ProductID = s.ProductID
INNER JOIN products p
ON p.ProductID=s.ProductID
INNER JOIN customers c
ON c.ID=s.C_ID
WHERE r.C_ID = 3 AND r.matchType='Price'
ORDER BY s.Price ASC
结果如下:
FName | ProductName | Description | Quantity | Price
--------------------------------------------------------------------------=
compny1 Apple royal apples fm appleco. 5.0 5.00
daz Apple sweet apples 6.0 5.50
company2 Apple Apples yum 8.0 9.00
我想通过选择行并更新数据库来显示全部请求的 10KG 数量,即输出应该是:
apples @5kg from compny1 = 5.00
apples @5kg from daz = 5.50
total = 10.50
然后数据库应显示“Daz”数量为 1.0 KG。但是,我一直在做这件事。我试图做以下事情:
while ($rows1 = mysql_fetch_assoc($queryQuantity2)){
if($rows1['Quantity']==$quantityRequested){ //If the first row = 10KG output only this row.
echo $rows1['FName'];
echo $rows1['NameProduct'];
echo $rows1['Quantity'];
echo $rows1['Price'];
}else{
//stuck here check the next rows and see there is 6KG's .. We need 10KG Requested - 5KG from daz(row1)
// -Remaining amount left(i.e.5KG)
//hence, print the output specified above and UPDATE Database where quantity has been reduced by X amount.
}
好的,那么问题是什么。我需要“弥补”10KG 的要求。
现在“最便宜”的方法是按我拥有的 Asc Price 对可用匹配进行排序。
不,我们可以看到第一行显示“compny1”以 5.00 英镑的价格出售 5 公斤……所以,我们需要 10 公斤,因此我们显示第 1 行。接下来,由于我们还没有满足 10 公斤的需求(仍然需要另外 5 公斤),我们看在第二行。我们看到“daz”卖 6KG。但是我们只需要再增加 5 公斤就可以满足 10 公斤的需求。因此,我希望做的是...更新表,以便将第一条记录复制到另一个表,并将第二行更新为剩余 1.0kg(6KG-5KG)。因此,向客户展示:您的 10KG 可以由
compny1 5KG@5.00
daz 5KG@5.50
------
Total £10.50
所以,这是我的问题。在满足要求的数量之前,我不知道如何继续检查行。我想我需要某种“计数器”来跟踪“到目前为止”添加了多少数量,然后检查下一行还需要多少。