Sebastian: & MySQL: Summenfunktion bei Abfrage

Hallo zusammen,

leider hat mir die Dokumentation von MySQL nicht wirklich weiterhelfen können, weil ich wahrscheinlich nicht weiß, wie das was ich suche heißt.

Mein Problem: Für eine Veranstaltung können Teilnehmer verschiedene Sachen vorbestellen. Die bestellte Anzahl wird in einer MySQL-Tabelle gespeichert:
----------------------------------
| id | art1 | art2 | art3 | art4 |
----------------------------------
|1234|   1  |   0  |   0  |   1  |
----------------------------------
|2345|   0  |   0  |   1  |   1  |
----------------------------------
|3456|   0  |   1  |   1  |   0  |
----------------------------------
|4567|   1  |   1  |   0  |   1  |
----------------------------------
          usw.
----------------------------------

Nun möchte ich eine Abfrage machen, die mir die Summe aller bestellten Artikel liefert. Als Zwischenlösung habe ich eine Abfrage realisiert in der Richtung SELECT 'art1', 'art2', 'art3', 'art4' FROM tabelle und lasse dann in einer Schleife immer den aktuellen Wert dazuaddieren.
Aber da gibt es sicherlich noch was eleganteres, oder?

Vielen Dank schonmal für erhellend Helfendes,
Sebastian

  1. Hi,

    Aber da gibt es sicherlich noch was eleganteres, oder?

    könnte mir vorstellen das dir die Sum-Funktion weiterhilft:

    select sum(art1) as sum_art1, sum(art2) as sum_art2, etc.  
      from tabelle  
    (where ...)
    

    auf Kundenebene könntest du das so machen:

    select id as Kunde, sum(art1) as sum_art1, etc.  
      from tabelle  
     group by id
    

    aber es sieht fast so aus, als würde bei dir eh jeder Kunde nur eine Zeile belegen...dann brauchst du das natürlich nicht...

    den Group by benötigst du in jedem Fall, wenn du im Select Spalten hast - die nicht aggregiert werden (sum(), max(), min(), avg(), etc.)
    du musst in den group by alle Spalten packen, die nicht aggregiert werden...

    solltest mehr Information auch in der mySQL-Referenz zu Sum() & Co finden.

    Gruss
    Seppel

    1. Vielen Dank, Seppel, genauso hat's funktioniert!
      Gruß,
      Sebastian

  2. hi,

    leider hat mir die Dokumentation von MySQL nicht wirklich weiterhelfen können, weil ich wahrscheinlich nicht weiß, wie das was ich suche heißt.
    [...]
    Nun möchte ich eine Abfrage machen, die mir die Summe aller bestellten Artikel liefert.

    Du suchst wohl die Aggregatfunktion SUM().

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo wahsaga,
      genau die Funktion suchte ich, aber eben mit verständlicher Erklärung. Denn als ich durch eigene Recherche auf dieser Seite schonmal war, dachte ich "ne, das ist nicht, wonach du suchst".
      War's dann aber wohl doch und mit Seppels Übersetzung hat's auch funktioniert.
      Gruß,
      Sebastian