Ilja: MySQL 5.0.27: Anzahl nach zwei Feldern ermitteln

Beitrag lesen

moin,

Ich habe eine Tabelle mit Zitaten verschiedener Autoren. Mit
SELECT COUNT(autor) FROM zitate GROUP BY autor
und anschließendem mysql_num_rows in PHP kann ich mir die Anzahl der Autoren ausgeben lassen.

erstens macht es in dieser form keinen sinn, erst nach autoren zu gruppieren und dann die spalte in den count mit einzubauen, verwende in solchen fällen COUNT(*) anstelle von COUNT(autor).

außerdem ist noch ungeklärt, ob das feld autor den Constraint NOT NULL hat. ist dies nicht der fall, so würde dir mit mysql_num_rows ein falscher wert ausgegeben werden.

Jetzt möchte ich die Autoren nach Geschlecht ermitteln (männlich, weiblich, undefiniert

ich beziehe mich hier auch auf deinen ergänzungspost (da ist ein kleiner fehler 0 anstelle von 1 ist höchtwahrscheinlich nicht def.). leider hast du bei den beispieldaten nicht genau spezifziert, wie das ergebnis nun aussehen soll. willst du die infomrationen in nur einem datensatz zurück haben, verwende in solchen fällen DISTINCT in den COUNT funktionen, ohne vorher zu gruppieren.

SELECT COUNT(*) Zitate,
       COUNT(DISTINCT autor) Autoren,
       COUNT(CASE sex WHEN 1 THEN 1 ELSE NULL END) Männer,
       COUNT(CASE sex WHEN 2 THEN 1 ELSE NULL END) Frauen,
       COUNT(CASE sex WHEN 0 THEN 1 ELSE NULL END) Frauen,
FROM zitate
;

willst du mehr als einen Datensatz zurück bekommen, solltest du noch mal genau spezifizieren, wie das ergebnis aussehen soll.

Ilja