2016-10-01 8 views
0

私はmysqlデータベースから行のリストを返すクエリを持っています。生成された行のリストには行の値が同じです。PHPのwhileループ内のグループ化と合計値

Table 
id mAmount paidAmount 
1  100  50 
1  100  30 
2  200  20 
2  200  150 

は、私が実際にpaidAmountを合計し、同じidあたりmAmount値のちょうど1から減算します。

例えば

1 | (100) - (50 + 0) = 50 | 
1 | (100) - (30 + 50) = 20 | 
2 | (200) - (20 + 0) = 180 | 
2 | (200) - (150 + 20) = 30 | 

私は誰任意のは、これに私の全体のコードを与えたいが、whileループまたは可能性のforeach文を使用して、PHPのいずれかを使用して、それについて移動する方法についてのアイデアはありません。ありがとう、本当に感謝します。

+1

ここで '上の素敵なチュートリアルですSUM() 'http://www.mysqltutorial.org/mysql-sum/ - 何かを試して何かに問題があった時に戻ってきてください。 –

+0

@ Fred-ii-私は実際にSQLのクエリでこれを行うためにSUM()を使用することができますが、問題は、私はPHPの文を使用してこれをやりたいです。 – MessiahCoder

+0

@ Fred-ii- do not mean ... *「試したSUMthing」*? – charlietfl

答えて

0

支払額をループして累積してから減算してください。この例では 私はidでご予約注文あなたの記録を想定し、行と呼ばれる多次元配列にレコードを渡す:

$currentId = $rows[0]['id']; 
$accumulated = 0; 
foreach ($rows as $row) { 
    if ($row['id'] != $currentId) { 
    $accumulated = 0; 
    $currentId = $row['id']; 
    } // end if not current id 

    $accumulated += $row['paidAmount']; 
    $balance = $row['mAmount'] - $accumulated; 
    $row['balance'] = $balance; 
    $result[] = $row; 
} // end foreach 

print_r ($result); 

結果は次のように表記します。

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [mAmount] => 100 
      [paidAmount] => 50 
      [balance] => 50 
     ) 

    [1] => Array 
     (
      [id] => 1 
      [mAmount] => 100 
      [paidAmount] => 30 
      [balance] => 20 
     ) 

    [2] => Array 
     (
      [id] => 2 
      [mAmount] => 200 
      [paidAmount] => 20 
      [balance] => 180 
     ) 

    [3] => Array 
     (
      [id] => 2 
      [mAmount] => 200 
      [paidAmount] => 150 
      [balance] => 30 
     ) 
    ) 
関連する問題