2016-10-01 2 views
0

Ich habe eine Abfrage, die eine Liste von Zeilen aus MySQL-Datenbank zurückgibt, die Liste der Zeilen haben Zeilenwerte sind die gleichen.Gruppen- und Summenwerte innerhalb der While-Schleife in PHP

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

Ich möchte eigentlich die paidAmount und subtrahieren pro demselben id von nur einer von mAmount Wert summieren.

Zum Beispiel

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

Ich will nicht jemand eine mir die gesamten Codes dazu geben, aber eine Idee, wie über sie entweder mit PHP mit while-Schleife oder möglicherweise foreach-Anweisungen zu gehen. Danke wirklich zu schätzen.

+1

auf ': Für dieses Beispiel nehme ich an Sie vorbestellen Ihre Aufzeichnungen von id und die Datensätze zu einem mehrdimensionalen Array übergeben genannt Reihen:

$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); 

Ergebnisse wie diese gedruckt SUM() 'http://www.mysqltutorial.org/mysql-sum/ - Komm zurück, wenn du etwas versucht hast und Probleme mit etwas hattest. –

+0

@ Fred-ii- Ich kann tatsächlich SUM() verwenden, um dies in einer SQL-Abfrage zu tun, aber das Problem ist, ich möchte dies mit PHP-Anweisung zu tun. – MessiahCoder

+0

@ Fred-ii- meinst du nicht ... * "versucht SUMthing" *? – charlietfl

Antwort

0

Nur müssen Sie die bezahlte Menge Schleife und akkumulieren, dann machen Sie die Subtraktion. Hier ist ein nettes Tutorial

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 
     ) 
    ) 
Verwandte Themen