2017-11-25 7 views
-4

私は小さな会計アプリケーションを開発しています。以下の関数は、サプライヤのトランザクションを取得するために使用されます。私はこのループで各取引の後に残高を得たいと思っています。ある人が私に最良の方法を教えてくれますか?限界付きのランニングバランスを計算する

public function transaction_by_id_paginated($supplier_id,$start_from,$limit) { 
$sql=" 
SELECT * 
    FROM transactions 
WHERE tr_sup_id = $supplier_id 
ORDER 
    BY tr_date DESC 
LIMIT $start_from, $limit 
"; 
$suppliers = DB::fetch($sql); 
return $suppliers;   
} 

この機能では、計算された残高の値が必要です。私はDBにバランスを保存していません。

transactionsテーブルのフィールドが

tr_id (Primary) int(11) 
tr_sup_id int(11) 
bill_id int(11)  
tr_date date   
tr_type varchar(250)   
tr_bill int(250)   
tr_payment int(250)   
tr_payment_note varchar(250)  

ある私はbalance = balance + tr_payment - tr_bill

+0

をあなたがテーブルからtr_payment' 'の合計が必要です? – AdhershMNair

+0

いいえ、私はバランス= balance + tr_payment - tr_billと等しいバランスをしたいです –

+0

質問で指定してください。 – AdhershMNair

答えて

0

に等しいバランスは次のことを考えてみたい:

SELECT * FROM ints; 
+---+ 
| i | 
+---+ 
| 0 | 
| 1 | 
| 2 | 
| 3 | 
| 4 | 
| 5 | 
| 6 | 
| 7 | 
| 8 | 
| 9 | 
+---+ 

SELECT i, @j:[email protected]+i FROM ints, (SELECT @j:=0) vars ORDER BY i; 
+---+----------+ 
| i | @j:[email protected]+i | 
+---+----------+ 
| 0 |  0 | 
| 1 |  1 | 
| 2 |  3 | 
| 3 |  6 | 
| 4 |  10 | 
| 5 |  15 | 
| 6 |  21 | 
| 7 |  28 | 
| 8 |  36 | 
| 9 |  45 | 
+---+----------+ 
10 rows in set (0.00 sec) 

SELECT i, @j:[email protected]+i FROM ints, (SELECT @j:=0) vars ORDER BY i LIMIT 3,6; 
+---+----------+ 
| i | @j:[email protected]+i | 
+---+----------+ 
| 3 |  3 | 
| 4 |  7 | 
| 5 |  12 | 
| 6 |  18 | 
| 7 |  25 | 
| 8 |  33 | 
+---+----------+ 
6 rows in set (0.00 sec) 
関連する問題