Hallo,
Wie kann ich bitte herausfinden wieviele Ergebnisse eine Abfrage lieferte?
Zum einen möchte ich herausfinden, wieviele Einträge überhaupt in der Tabelle sind,
und zum anderen möchte ich herausfinden wieviele Eintrage auf ... WHERE city LIKE 'M%' geliefert werden.Ich denke zwar an COUNT(), (keine AHnung ob COUNT(*) oder COUNT(id), mir ist der Unterschied nicht bewusst)
Count(*) zählt alle betroffenen Datensätze. Count(id) zählt die betroffenen Datensätze, die eine id != NULL haben.
aber meines Erachtens darf man COUNT() so nicht anwenden,
weil COUNT() als "Aggregate Function" nur in Verbindung mit GROUP BY Verwendung finden darf.
Nein, andreasrum ;-))
Bei der Verwendung von GROUP BY dürfen als Felder im Resultset nur die gruppierten Felder oder Aggregatfunktionen stehen. Bsp.:
SELECT name, vorname FROM tabelle GROUP BY name
ist problematisch, weil nicht bestimmt ist, welcher Vorname z.B. bei mehrfachem Auftreten eines Namens im Resultset steht. Bei
Maier, Ines
Maier, Klaus
Maier, Michael
wird ja, nach Name gruppiert, dann im Resultset Maier nur einmal stehen. Welcher Vorname ist dann aber richtig?
SELECT name, SUM(betrag) FROM tabelle GROUP BY name
ist unproblematisch, weil z.B. für alle Maier die Summe der Beträge gebildet werden kann.
SELECT COUNT(*) FROM tabelle
und
SELECT COUNT(*) FROM tabelle WHERE city LIKE 'M%'
ist aber durchaus korrekt.
viele Grüße
Axel