Rechenoperationen von MySQL machen lassen

Author: Markus René Einicher Veröffentlicht: on Thursday 24. May 2007 at 07:29 Updated: on Thursday 24. May 2007 at 07:29 Categories: MySQL Tags: Comments: 3 - Post a Comment Trackbacks: 0 - Trackback URL
Bei den ganzen Codenschnipseln und Tutorials im Internet fäll auf, dass viele MySQL nur zum sturen eintragen, updaten und auslesen von Daten nutzen. Der ganze technische Aufwand wird von PHP erledigt. Und das, obwohl man zum Beispiel Rechenoperationen viel bequemer mit MySQL abwickeln kann.

Es kommt oft vor, dass man das Ergebnis einer Spalte mit einer Rechnung updaten will. Viele tun es sich dann an, dass sie vorher mit SELECT auslesen was in der Spalte steht, den Wert in einer Variabel speichern, und diesen dann beim Updaten verwenden:

<?php   $query = mysql_query('SELECT summe FROM tabelle WHERE id=386');   $result = mysql_fetch_object($query);   mysql_query('UPDATE tabelle SET summe='.($result->summe+815).' WHERE id=386');   ?>

Tatsächlich is es aber unnötig das so zumachen, weil MySQL das selbst kann! Man kann einfach Rechenoperationen mit einer Spalte machen:

<?php   mysql_query('UPDATE tabelle SET summe=summe+815');   ?>

// prüfen ob verkürzte Schreibweise += sogar geht

Aber nicht nur das, man kann sogar mit zwei Spalten rechnen, ohne zu wissen was drin steht:
<?php   mysql_query('UPDATE tabelle SET summe=summe+anderespalte');   ?>

Das Ganze funktioniert mit Minus (-), Plus (+), Durch (/) und Mal (*). Darüber hinaus hat MySQL aber auch noch komplexe mathematische Funktionen wie Pi, Cosinus, Sinus und dergleichen.

Lässt man die Datenbank mehr machen, spart man sich nicht nur PHP-Quelltext sondern auch Performance. Zum einen, weil man weniger mysql_query absetzen muss, zum anderen, weil die Datenbank das schneller erleligt.