mysql einträge subtrahieren

kleinerasd

Grünschnabel
PHP:
$id = $_REQUEST['id'];

mysql_connect("localhost", "nutzer", "password") or die ("Fehler: Keine Verbindung moeglich.");
mysql_select_db("points") or die ("Fehler: Die Datenbank existiert nicht.");

$ergebnis = mysql_query("SELECT * FROM `points` WHERE name ='".$id."' LIMIT 0, 100 ");
  while($row=mysql_fetch_object($ergebnis)){
    echo '<tr>'."\r\n";
	echo '<td>'.$row->points.'</td>'."\r\n";
    echo '<tr>'."\r\n";
  }
Hallo,
Ich möchte gerne die in der Datenbank eingetragenen Punkte auslesen, wie es der Code oben auch richtig macht.
Nun möchte ich dahinter eine neue Spalte, welche immer die Differenz zu dem Punkteeintrag oben drüber anzeigt.

Das Ganze sollte dann so aussehen:
1500|...
1000|+500
2000|-1000
1750|+250
...
also so ungefähr... ich hoffe das war verständlich

Ich hoffe mir kann da jemand weiterhelfen, da ich im Moment nicht weiter weiß, wie ich das anstellen soll, damit die spalte `points` da subtrahiert.
 
Ich habe jetzt keine Idee, wie das in SQL zu lösen ist, aber du verwendest ja PHP:

PHP:
  $lastPoints = 0;
  while($row=mysql_fetch_object($ergebnis)){
    echo '<tr>'."\r\n";
    echo '<td>'.$row->points.'</td>'."\r\n";
    echo '<td>' . ($lastPoints ? $lastPoints - $row->points : "0") . '</td>' . "\r\n";
    echo '<tr>'."\r\n";
    $lastPoints = $row->points;
  }

Oder so ähnlich.
 
Zuletzt bearbeitet:
Einfach mit Variablen
SQL:
SELECT
	--Die differenz berechnen, ausser es handelt sich um ide erste Ziele (@lastpoints == 'init')
	IF(@lastpoints <> 'init', @lastpoints - points, NULL) AS diff,
	--Die Punkte ausgeben. Da wir hier uac gleich @lastpoints die aktuelle Punkte zuordnen, 
	--muss das nach der Differenberechnung kommen
	@lastpoints := points
FROM
	--@lastpoints initialisieren
	(SELECT @lastpoints := 'init') AS vars,
	--Deine Tabelle
	points;
 

Neue Beiträge

Zurück