MySQL: 3Spalten aus einer Abfrage zusammen zählen

Nord-Süd-Richtung

Erfahrenes Mitglied
Hi

ich möchte gerne 3 Spalten noch während der Abfrage addieren, ich habe schon den Befehl SUM gefunden, aber der ist nicht das was ich brauche. Ich suche soetwas:
Code:
SELECT * FROM tbl_name ORDER BY CALC(feld_1+feld_2+feld_3) DESC LIMIT 0,100
Gibt es so einen Befehl wie Calc?
 
Natürlich stehen dir bei MySQL Operatoren zur Verfügung.

Deine SQL sähe dann folgendermaßen aus:
Code:
SELECT tn.id, tn.something, tn.feld_1+tn.feld_2+tn.feld_3 AS feld_sum  FROM tbl_name tn ORDER BY feld_sum DESC LIMIT 0,100
Wenn du dann z.B. noch eine Eingrenzung möchtest von alles ab einer Summe von X geht das so:

Code:
SELECT tn.id, tn.something, tn.feld_1+tn.feld_2+tn.feld_3 AS feld_sum  
FROM tbl_name tn 
HAVING feld_sum > X
ORDER BY feld_sum DESC LIMIT 0,100
statt X nimmst du natürlich einen gültigen Wert.

ABER ACHTUNG BEI VERWENDUNG VON HAVING!
Hier hebelst du die Querycaches bei MySQL aus, d.h. er führt das SQL jedesmal voll aus. Je nach deiner Indexstruktur können da recht hohe RAM lasten auftreten. Gerade bei größeren Datenbanken sollte man stattdessen hier lieber den Weg über VIEWS gehen.

Die Beispiele von mir gehen von einem typenkonformen Fall aus. Solltest du verschiedene Datentypen haben führt MySQL/ORACLE zum Teil einen automatischen Cast durch. Dies kann mituntern zu seltsamen Ergebnissen führen. Deswegen sollte man in einem solchen Fall lieber selber die Casts steuern.

Doku (MySQL): http://dev.mysql.com/doc/refman/5.1/de/type-conversion.html
Doku (MySQL;SELECT): http://dev.mysql.com/doc/refman/5.1/de/select.html
Doku (MySQL;Operatoren): http://dev.mysql.com/doc/refman/5.1/de/operator-precedence.html
 
Zuletzt bearbeitet:
Zurück