Differenz verschiedener Werte aus mysql_query / while Schleife

Feely

Mitglied
Hallo zusammen,

ich hänge bei folgendem Problem: Ich habe eine Datenbankabfrage die wie folgt aussieht:

PHP:
$query = mysql_query("SELECT id,k,c,y,m,swa4,swa3,fa4,fa3,date FROM tonerstand WHERE serial = '". $serial ."' ORDER BY date DESC");
while($result = mysql_fetch_array($query)) {
// Daten aufbereiten usw..
}

Die Datenbank sieht folgendermaßen aus:

Code:
id    serial        k    c    y    m    swa4    swa3    fa4    fa3    date
-----------------------------------------------------------------------------------------------------------
4940     DBN02527     81     62     44     14     115462     1002     140950     2067     2015-06-09 10:21:16
5074     DBN02527     76     59     42     11     115691     1002     141279     2067     2015-06-10 08:53:11
5208     DBN02527     72     58     41     10     115875     1002     141517     2067     2015-06-11 08:51:12
5342     DBN02527     66     56     38     10     116312     1002     141861     2067     2015-06-12 09:35:06
5476     DBN02527     65     56     38     10     116413     1002     141943     2067     2015-06-13 08:30:00
5610     DBN02527     65     56     38     10     116413     1002     141943     2067     2015-06-14 08:30:00
5744     DBN02527     64     56     38     10     116490     1003     141956     2067     2015-06-15 08:30:00

Wie realisiere ich die Abfrage so das ich die Differenzen zwischen den 'Zählerständen' (swa4 bis fa3) innerhalb der while Schleife errechnen kann?

Beispielsweise die Differenz von: swa4 115462 aus id 4940 zu swa4 115691 aus id 5074 usw.

Ich könnte zwar versuchen innerhalb der ersten while-Schleife eine zweite query zu fahren...erscheint mir aber etwas mittelalterlich.

Da gibt es doch sicher eine geschmeidigere Lösung?
 
Hi

Die "mysql_"-Funktionen bitte nicht mehr verwenden. Seit 11 Jahren gibts was Besseres,
und ein vernünftig eingestellter Server meldet inzwischen jede Verwendung als Fehler
(auch wenns noch funktioniert)

Außerdem solltest du dich über SQL-Injections informieren. Der Code ist nicht nur wegen Veralterung falsch.

Zum Problem:
Also gesucht ist jeweils die Differenz zur vorigen Zeile?
Zuerst einmal in der Schleife mitzählen, beim wievielten Eintrag man ist; beim obersten gibts natürlich
keine Differenz zur vorigen Zeile. Was für den Fall gemacht werden soll liegt an deinem Anwendungsfall.
Dann in der Schleife die aktuelle Zeile in extra Variablen speichern, damit man sie beim nächsten
Schleifendurchlauf als "vorige Zeile" hat, und bei jedem Schleifendurchlauf (außer dem Ersten eben)
die Differenz von der gerade erhaltenen Zeile zur abgepsiecherten ausrechnen.
 
Zurück