MySQL: Wie lassen sich Kategorien zählen? (Count()?)

Das ist vermutlich eher eine Anfängerfrage, habe aber über die Suchfunktion nichts brauchbares gefunden :-( :

Ich habe eine MySQL-Tabelle, in der es (vereinfacht) Titel, Kategorien und Hauptkategorien gibt. Jeden Titel (oder zumindest ID) gibt es nur einmal. Um heraus zu bekommen, wie viele Titel eingetragen sind kann ich ja folgende Abfrage machen "SELECT count(*) AS anzahl FROM tabelle".

Wie aber bekomme ich heraus, wie viele Katagorien und wie viele Hauptkategorien es gibt? Jeder Titel gehört einer Kategorie und einer Hauptkategorie an. Beide gibt es mehrfach, aber mehr Kategorien als Hauptkategorien, so in etwa:

Titel 1, Kategorie a, Hauptkategorie A
Titel 2, Kategorie a, Hauptkategorie A
Titel 3, Kategorie b, Hauptkategorie B
Titel 4, Kategorie b, Hauptkategorie B
Titel 5, Kategorie c, Hauptkategorie B
Titel 6, Kategorie c, Hauptkategorie B
 
Hi,

Code:
SELECT kategorie, COUNT(id) AS anzahl FROM tabelle GROUP BY kategorie

liefert Dir alle Kategorien nebst der Anzahl der Titel. Mit den Hauptkategorien kannst Du's natürlich genauso machen.

LG
 
Hi,

Code:
SELECT kategorie, COUNT(id) AS anzahl FROM tabelle GROUP BY kategorie

liefert Dir alle Kategorien nebst der Anzahl der Titel. Mit den Hauptkategorien kannst Du's natürlich genauso machen.

LG

Das hatte ich so auch schon versucht, aber ich bekomme dann einen Wert pro Kategorie. Im Beispiel wäre das:

Kategorie a, 2
Kategorie b, 2
Kategorie c, 2

bzw.

Hauptkategorie A, 2
Hauptkategorie B, 4

Was ich benötige ist die Anzahl der Kategorien, also auf das Beispiel bezogen als Ergebnis "3", wenn ich nach Kategorie suche und "2", wenn ich nach der Hauptkategorie suchen würde. Oder geht das nur mit einer Programmiersprache, die das Ergebnis in einer Schleife ausliest und weiterverarbeitet (ich nutze PHP)?
 
Hallo,

Extra Programmieren brauchst Du es nicht, probier es einfach mit der Dir schon bekannten SELECT-Anweisung (bloß ohne COUNT- Anweisung) als Unterabfrage aus, also:

SELECT Count (Hauptkategorie) AS [Anzahl Hauptkategorien]
FROM (SELECT Hauptkategorie FROM tabelle GROUP BY Hauptkategorie);

Höffetlich hilft es Dir,

Grüße aus Braunschweig
 
Hallo,

Extra Programmieren brauchst Du es nicht, probier es einfach mit der Dir schon bekannten SELECT-Anweisung (bloß ohne COUNT- Anweisung) als Unterabfrage aus, also:

SELECT Count (Hauptkategorie) AS [Anzahl Hauptkategorien]
FROM (SELECT Hauptkategorie FROM tabelle GROUP BY Hauptkategorie);

Höffetlich hilft es Dir,

Grüße aus Braunschweig

Ja, gab noch eine Fehlermeldung, aber

SELECT Count (Hauptkategorie) AS [Anzahl Hauptkategorien] FROM (SELECT Hauptkategorie FROM tabelle GROUP BY Hauptkategorie) AS a;

funktioniert. Danke! :)
 
Hi,

sorry, hatte nicht genau genug gelesen. Ich dachte Du wolltest wissen, wieviele Titel jede Kategorie hat. Die Anzahl der Kategorien könntest Du auch ganz ohne Gruppierung, Subselect usw. bekommen: SELECT COUNT(DISTINCT Kategorie) AS anzahl FROM tabelle

LG
 
Zurück