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
データベースには、残り1.0KGの「Daz」数量が表示されます。しかし、私はこれをすることに夢中になり続けます。私は次のことを試みました:
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の要求された需要を「補う」必要があります。
これを行うための「最も安い」方法は、利用可能な一致を私が持っているAscPriceでソートすることです。
いいえ、最初の行は「compny1」が5KGを£5.00で販売していることを示しています...したがって、10KGが必要なので、行1を表示します。次に、10KGの需要をまだ満たしていないため(さらに5KGが必要)、 2行目。'daz'は6KGを販売していることがわかります。しかし、10KGの需要を満たすために必要なKGはあと5つだけです。したがって、私がやりたいのは...テーブルを更新して、最初のレコードが別のテーブルにコピーされ、2番目の行が残り1.0kg(6KG-5KG)に更新されるようにします。したがって、顧客に表示する:あなたの10KGはによって購入することができます
compny1 5KG@5.00
daz 5KG@5.50
------
Total £10.50
だから、それが私の問題です。要求された数量に達するまで行をチェックし続ける方法がわかりません。「これまでに」追加された量を追跡し、次の行からどれだけ多くが必要かを確認する、ある種の「カウンター」が必要だと思います。