MySQL - Anzahl der unterschiedlichen Tabelleneinträge zählen?
-
Hi,
Ich habe eine Tabelle mit allerlei Zeugs drin, und jeder Eintrag hat eine Zugehörikeit zu einer "Klasse". Jetzt möchte ich herausfinden, wieviele verschiedene Klassen in dieser Tabelle erwähnt sind, und nicht etwa wieviele Einträge vorhanden sind! Leider weiß ich nicht, ob eine solche SQL-Anfrage überhaupt möglich ist. Wenn nicht müsste ich alle Einträge auslesen und manuell die unterschiedlichen Einträge zählen, und ich glaube das ist nicht so gut, da in dieser Tabelle sehr viele Einträge vorhanden sein können. Kann mir also jemand helfen?
-
dann erklär mal - wodurch undtrescheiden sich die einzelnen einträge, und woher erkennt man, dass der eintrag einer 'klasse' zugeordnet ist?
-
Hm, probiere mal:
SELECT DISTINCT COUNT(t1.classid) FROM Tabelle AS t1 GROUP BY t1.classid
War jetzt nur ein Versuch, bin Anfänger in Sachen höheres MySQL.
MfG MAV
-
Reicht da nicht auch
SELECT COUNT(classid) FROM Tabelle
-
Naja, ich dachte bei COUNT muss GROUP dabei aber das ist wohl nur bei mehreren Tabellen in einem Ausdruck so nötig...
OK, das meiste ist Quatsch aber DISTINCT würde ich auf GrundRaziell schrieb:
Jetzt möchte ich herausfinden, wieviele verschiedene Klassen in dieser Tabelle erwähnt sind, und nicht etwa wieviele Einträge vorhanden sind!
Obwohl Klasse ja sowas wie KlassenID ist, villeicht will er dann die Anzahl der verwendeten Klassen von den Einträgen...
-
SELECT COUNT(DISTINCT classid) FROM Tabelle;
:xmas1:
-
Und warum ist meinjes falsch?
Ich beziehe mich nämlich auf ein MySQL Beispiel von:
http://www.mysql.de/doc/de/DISTINCT_optimisation.html schrieb:
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
Was ist der Unterschied zu hier? :xmas2:
-
COUNT(t1.classid) zählt ja die Anzahl von t1.classid und auf diese Anzahl wendest du dann DISTINCT an -> macht nicht viel Sinn
-
Aber das Beispiel hier war von Mysql!.com oder so
-
Ist ja auch vom Syntax her nicht falsch, macht eben nur was anderes
Mit SELECT DISTINCT classid FROM Tabelle; würdest du jetzt als Result die ganzen unterschiedlichen classid s bekommen, da er aber ja nur an der Anzahl interessiert ist kommt noch ein COUNT außenrum :xmas1: Theroretisch auch möglich, aber eben nicht gerade performant, nach dem ersten Query mysql_num_rows anrufen
-
Nö? Ich mache ddas immer so...
Aber ich verstehe jetzt was du meinst, ok hast natürlich Recht, wollte ich auch nie anzweifeln
-
Mis2com schrieb:
hast natürlich Recht, wollte ich auch nie anzweifeln
Das hoffe ich schwer für dich :p
Denn das 11. Gebot lautet:
Zweifle nie an der Kompetenz eines Moderator und kritisiere ihn nicht!
Ansonsten noch schöne Weihnachts-Feiertage :xmas1: