Summe und Datensätze ausgeben

Kurt Cobain

Erfahrenes Mitglied
Tach


Ich will aus einer Tabelle, die Summe ausgeben, wo die Spalte category 2 ist ausgeben und noch die restlichen datensätze * die in der Tabelle vorhanden sind.
So:

PHP:
$abfrage00 = "SELECT SUM(rating) AS `summe`,* FROM rating WHERE category = '2'";
$ergebnis00 = mysql_query($abfrage00)  or die (mysql_error());

Dann kommt aber die Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM rating WHERE category = '2' at line 1



Was is falsch?

Gruß
 
Hallo,

SUM() ist eine Aggregat- bzw. Gruppenfunktion und bildet die Summe über alle Datensätze die deinen Kriterien entsprechen (WHERE categorie_id=2). Das heisst die Abfrage wird genau ein Ergebnis liefern. Sofern du noch zusätzliche Spalten ausgeben möchtest, musst du nach diesen gruppieren. Dann beziehen sich die Summen, die SUM() bildet auf die einzelnen Gruppen.

Alternativ kannst du auch mit einer skalaren Subquery arbeiten um bei jedem Datensatz die Gesamtsumme als zusätzliche Spalte zur Verfügung zu haben, falls es das ist, was du möchtest:

SQL:
SELECT *, 
      (SELECT SUM(rating) 
         FROM rating 
        WHERE category_id = '2') AS `summe` 
  FROM rating 
WHERE category = '2';


Edit: Der Vollständigkeit halber, falls du Oracle benutzt kannst du das eben genannte Statement auch einfacher gestalten. In dem Fall benutze ich SUM() als analytische Funktion, nicht als Aggregatfunktion.

SQL:
SELECT rating.*, 
       SUM(rating) OVER () AS summe
  FROM rating
 WHERE category='2';

Markus
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück