MySQL-Spalten addieren
Bastian
- datenbank
0 Vinzenz Mai0 Bastian0 Vinzenz Mai0 Bastian0 Vinzenz Mai0 Bastian
Hallo zusammen
Ich habe eine MySQL-Tabelle mit verschiedenen Spalten (spalte1, spalte2, spalte3), welche Zahlenwerte enthalten.
Nun möchte ich für jeden Datensatz die Summe aus spalte1, spalte2 und spalte3 berechnen und dann nach dieser Summer absteigend sortieren.
Weiss jemand, mit welcher Query ich das bewerkstelligen kann?
Grüsse
Bastian
Hallo,
Ich habe eine MySQL-Tabelle mit verschiedenen Spalten (spalte1, spalte2, spalte3), welche Zahlenwerte enthalten.
Nun möchte ich für jeden Datensatz die Summe aus spalte1, spalte2 und spalte3 berechnen und dann nach dieser Summer absteigend sortieren.
Summe: dafür gibt es den Additionsoperator +.
Sortieren: dafür gibt es die ORDER-BY-Klausel.
Absteigend sortieren: dafür gibt es das Schlüsselwort DESC.
Weiss jemand, mit welcher Query ich das bewerkstelligen kann?
mit dem daraus resultierenden simplen SQL-Statement. Es gibt da überhaupt keine Besonderheiten.
Was hast Du versucht, an welcher Stelle bist Du gescheitert?
Freundliche Grüße
Vinzenz
mit dem daraus resultierenden simplen SQL-Statement. Es gibt da überhaupt keine Besonderheiten.
Was hast Du versucht, an welcher Stelle bist Du gescheitert?
Ich bin von folgendem Statement ausgegangen:
SELECT spalte FROM tabelle ORDER BY spalte DESC LIMIT 3
Schreibe ich also?:
SELECT spalte1 + spalte2 + spalte3 FROM tabelle
Nach was wird dann sortiert?
Hallo,
» Was hast Du versucht, an welcher Stelle bist Du gescheitert?
Ich bin von folgendem Statement ausgegangen:
SELECT spalte FROM tabelle ORDER BY spalte DESC LIMIT 3Schreibe ich also?:
SELECT spalte1 + spalte2 + spalte3 FROM tabelle
Ohne ORDER-BY-Klausel wird überhaupt nicht sortiert. Das habe ich Dir schließlich gesagt - und auf die Dokumentation verwiesen:
» Sortieren: dafür gibt es die ORDER-BY-Klausel.
Dort findest Du unterhalb des Textes
"The following list provides additional
information about other SELECT clauses:"
ein Beispiel für ORDER BY mit einer berechneten Spalte.
Freundliche Grüße
Vinzenz
Ja, das Handbuch habe ich natürlich schon konsultiert. Aber ich finde mich nicht zurecht. Das Beispiel für ORDER nach summierten Spalten finde ich nicht.
Ohne ORDER-BY-Klausel wird überhaupt nicht sortiert. Das habe ich Dir schließlich gesagt - und auf die Dokumentation verwiesen:
»» » Sortieren: dafür gibt es die ORDER-BY-Klausel.
Dort findest Du unterhalb des Textes
"The following list provides additional
information about other SELECT clauses:"ein Beispiel für ORDER BY mit einer berechneten Spalte.
Freundliche Grüße
Vinzenz
Hallo Bastian,
Ja, das Handbuch habe ich natürlich schon konsultiert. Aber ich finde mich nicht zurecht. Das Beispiel für ORDER nach summierten Spalten finde ich nicht.
was soll ich dazu sagen? Ich sprach auch nicht von "summierten Spalten", ich sprach von
» ein Beispiel für ORDER BY mit einer berechneten Spalte.
Ist es so schwer, sich die Seite, die ich hier verlinke
» »» » Sortieren: dafür gibt es die ORDER-BY-Klausel.
anzeigen zu lassen und anschließend in das Suchfeld des Browsers, das man typischerweise über STRG+F erreicht,
» Dort findest Du unterhalb des Textes
den Text
» "The following list provides additional
» information about other SELECT clauses:"
The following list [...]
einzugeben, wenn man schon nicht den gesamten Handbuchabschnitt lesen will? Da das Beispiel *unterhalb* des von mir angegebenen Textes vorkommt, scrollt man etwas nach unten und findet:
<zitat>
The following list provides additional information about other SELECT clauses:
* A select_expr can be given an alias using AS alias_name. The alias
is used as the expression's column name and can be used in GROUP BY,
ORDER BY, or HAVING clauses. For example:
SELECT CONCAT(last_name,', ',first_name) AS full_name
FROM mytable ORDER BY full_name;
The AS keyword is optional when aliasing a select_expr. The preceding
example could have been written like this:
SELECT CONCAT(last_name,', ',first_name) full_name
FROM mytable ORDER BY full_name;
<zitat>
Achtung:
Da ist nicht von "summierten Spalten" die Rede. Dort wird von einer
select_expr
gesprochen, einfach ausgedrückt: "einer berechneten Spalte". Eine Spalte, die die Summe dreier Spalten zurückgibt, ist eine berechnete Spalte. Der einfachste Weg, nach dieser zu sortieren, ist also, dieser Spalte einen Aliasnamen zu verpassen und nach dieser so benannten Spalte (d.h. dem Aliasnamen) zu sortieren, so wie es hier am Beispiel einer Zeichenkettenaddition mit der der CONCAT-Funktion gezeigt wird.
Ersetze im vorliegenden Beispiel
CONCAT(last_name, ', ', first_name)
durch
spalte1 + spalte2 + spalte3
(wobei ich mir sicher bin, dass Deine Spalten nicht so heißen), ersetze weiter
full_name
durch einen angemessenen Spaltennamen Deiner Wahl, zum Beispiel
summe
und Du hast es geschafft (DESC nicht vergessen!).
Diesen Grad an Abstraktion sollte man schon beherrschen, wenn man programmieren will. [*]
Freundliche Grüße
Vinzenz
[*] Es ist klar, dass man manchmal auf dem Schlauch steht. So was passiert.
Sowas passiert auch mir.
Hallo Vinzenz
Obwohl ich deiner herablassenden Art nichts abgewinnen kann, danke ich dir für die Erläuterung. Damit kann ich was anfangen.
Einen gewissen Grad der Abstraktion beherrsche ich schon. Es ist aber falsch zu meinen, dieser wäre aus dem Nichts einfach da. Ich muss ihn selbst stets weiterentwickeln.
Bei MySQL stosse ich deswegen schnell an Grenzen, weil ich mich noch nicht gut auskenne und weil das Handbuch für Anfänger schlicht nicht geeignet ist.
Grüsse
Bastian
Hallo Bastian,
»» Ja, das Handbuch habe ich natürlich schon konsultiert. Aber ich finde mich nicht zurecht. Das Beispiel für ORDER nach summierten Spalten finde ich nicht.
was soll ich dazu sagen? Ich sprach auch nicht von "summierten Spalten", ich sprach von
»» » ein Beispiel für ORDER BY mit einer berechneten Spalte.
Ist es so schwer, sich die Seite, die ich hier verlinke
»» » »» » Sortieren: dafür gibt es die ORDER-BY-Klausel.
anzeigen zu lassen und anschließend in das Suchfeld des Browsers, das man typischerweise über STRG+F erreicht,
»» » Dort findest Du unterhalb des Textes
den Text
»» » "The following list provides additional
»» » information about other SELECT clauses:"The following list [...]
einzugeben, wenn man schon nicht den gesamten Handbuchabschnitt lesen will? Da das Beispiel *unterhalb* des von mir angegebenen Textes vorkommt, scrollt man etwas nach unten und findet:
<zitat>
The following list provides additional information about other SELECT clauses:* A select_expr can be given an alias using AS alias_name. The alias
is used as the expression's column name and can be used in GROUP BY,
ORDER BY, or HAVING clauses. For example:SELECT CONCAT(last_name,', ',first_name) AS full_name
FROM mytable ORDER BY full_name;The AS keyword is optional when aliasing a select_expr. The preceding
example could have been written like this:SELECT CONCAT(last_name,', ',first_name) full_name
FROM mytable ORDER BY full_name;
<zitat>Achtung:
Da ist nicht von "summierten Spalten" die Rede. Dort wird von einer
select_expr
gesprochen, einfach ausgedrückt: "einer berechneten Spalte". Eine Spalte, die die Summe dreier Spalten zurückgibt, ist eine berechnete Spalte. Der einfachste Weg, nach dieser zu sortieren, ist also, dieser Spalte einen Aliasnamen zu verpassen und nach dieser so benannten Spalte (d.h. dem Aliasnamen) zu sortieren, so wie es hier am Beispiel einer Zeichenkettenaddition mit der der CONCAT-Funktion gezeigt wird.
Ersetze im vorliegenden Beispiel
CONCAT(last_name, ', ', first_name)
durch
spalte1 + spalte2 + spalte3
(wobei ich mir sicher bin, dass Deine Spalten nicht so heißen), ersetze weiter
full_name
durch einen angemessenen Spaltennamen Deiner Wahl, zum Beispiel
summe
und Du hast es geschafft (DESC nicht vergessen!).
Diesen Grad an Abstraktion sollte man schon beherrschen, wenn man programmieren will. [*]Freundliche Grüße
Vinzenz
[*] Es ist klar, dass man manchmal auf dem Schlauch steht. So was passiert.
Sowas passiert auch mir.