Moritz: zusammenzählen, mehrerer COUNT(*) innerhalb SELECT

ich zähle während eine SELECT Abfrage über count(*) AS ergebniss einen Wert.

...SELECT count(*) AS ergebniss FROMTABLE WHERE...

Die Datensätze gebe ich anschliessend über eine WHILE Schleife aus.

Wenn ich aber den gesamten WERT aller count(*) AS ergebniss haben möchte also eine Zahl(Total).

kann ich entweder in meiner Schleife alles zusammenzählen

  
while ($ausgabe = mysql_fetch_object($result))  
{	  
$total=$total+$ausgabe->ergebniss;  
.  
.  
.  
}

oder aber...

Ich würde das Ergebnis gerne vor meiner Schleife schon haben, also müsste ich das zusammenzählen der einzelnen count(*) AS ergebniss
schon in meinem SELECT Befehl ausführen.

Geht das irgendwie?

Moritz

  1. Hi,

    Ich würde das Ergebnis gerne vor meiner Schleife schon haben, also müsste ich das zusammenzählen der einzelnen count(*) AS ergebniss
    schon in meinem SELECT Befehl ausführen.

    Geht das irgendwie?

    MySQL kennt für GROUP BY den Modifier WITH ROLLUP, der dir für die verwendeten Aggregatfunktion(en) auch noch mal das Ergebnis über der gesamten Gruppe liefert.

    Allerdings gibt’s diesen Wert immer erst nach den gruppierten Werten, und ORDER BY lässt sich zusammen mit dem Modifier nicht verwenden – aber kann man ja einfach noch ein SELECT drumherum schachteln, dass die Datensätze in der gewünschten Reihenfolge liefert (also die NULL, die in der Rollup-Spalte als Wert der Gruppierungsspalte geliefert wird, nach oben sortieren lassen).

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hallo,

    Ich würde das Ergebnis gerne vor meiner Schleife schon haben, also müsste ich das zusammenzählen der einzelnen count(*) AS ergebniss
    schon in meinem SELECT Befehl ausführen.

    Du hast leider nicht verraten, wie deine WHERE Bedingung aussieht, evtl. hilft dir ein einfaches GROUP BY:

    SELECT column, count(*) FROM table GROUP BY column

    vg ichbinich

    --
    Kleiner Tipp:
    Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...