Bastian: MySQL-Spalten addieren

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

  1. 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

    1. 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?

      1. 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 3

        Schreibe 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

        1. 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

          1. 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.

            1. 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.