mySQL Anzahl untersch. Daten in 2 Spalten bei gl. Wert in 3. Sp.
Steffen
- datenbank
Hallo,
ich möchte in einer Tabelle zählen, wieviele unterschiedliche Daten enthalten sind.
Spalte 1 Spalte 2 Spalte 3 Spalte 4
aaa 111 a xxx
aaa 111 a yyy
aaa 111 b zzz
aaa 222 a beliebig
aaa 333 c
bbb 444 a
bbb 555 a
bbb 666 d
ccc 777 e
Ergebnisspalte 1 Ergebnisspalte 2
aaa 4
bbb 3
ccc 1
Es soll gezählt werden für gleiche Einträge in der Spalte 1, wieviele unterschiedliche Datensätze es in den Spalten 2 und 3 gibt. Bei "aaa" soll zum Beispiel die doppelte Kombination "111" und "a" nur einmal gezählt werden. Innerhalb von "aaa" soll die Kombination "222" und "a" aber wieder mitgezählt werden.
Ich habe mich mit diversen DISTINCTs, COUNTs und GROUP BYs abgemüht, ohne dass es geklappt hat. Ich habe es bisher nur hingekriegt zu zählen, wie oft aaa, bbb usw. jeweils insgesamt vorhanden ist und wie oft innerhalb der Spalte 1 unterschiedliche Werte nur in Spalte 2 stehen (das brauchte ich aber beides auch). Letzteres habe ich mit "SELECT COUNT(DISTINCT(Spalte 2)), Spalte 1 FROM tabelle GROUP BY Spalte 1" und ersteres mit "SELECT Spalte 1, COUNT(*) FROM tabelle GROUP BY Spalte 1" (ich glaube, da hatte ich auch noch andere Lösungen) gemacht.
Die triviale Lösung für obiges Problem "SELECT COUNT(DISTINCT(Spalte 2, Spalte 3)), Spalte 1 FROM tabelle GROUP BY Spalte 1" scheint nicht zu funktionieren.
Gruß+Danke
Hallo,
und ein einfaches
SELECT 'Spalte 1', 'Spalte 2', 'Spalte 3', COUNT(*)
FROM Tabelle
GROUP BY 'Spalte 1', 'Spalte 2', 'Spalte 3'
tut es nicht?
Ciao, Frank
Hallo,
und ein einfaches
SELECT 'Spalte 1', 'Spalte 2', 'Spalte 3', COUNT(*)
FROM Tabelle
GROUP BY 'Spalte 1', 'Spalte 2', 'Spalte 3'tut es nicht?
Ciao, Frank
Nein, das liefert
Ergebnisspalte 1 Ergebnisspalte 2
aaa 2
aaa 1
aaa 1
aaa 1
bbb 1
bbb 1
bbb 1
ccc 1
Die 2 in der ersten Zeile kommt von der doppelten Kombination "111" und "a".
Ich hätte in dieser Tabelle jetzt gerne noch alle Zeilen gezählt, in denen die Ergebnisspalte 1 identische Werte hat. Das habe ich auch mit einer verknüpften Abfrage versucht, aber das hat nur eine nicht hilfreiche Fehlermeldung ergeben.
Hi,
na, da machst du darauf nochmal ein Count GROUP BY 'Ergebnisspalte 1' ..?
Ciao, Frank
Hi,
na, da machst du darauf nochmal ein Count GROUP BY 'Ergebnisspalte 1' ..?
Ciao, Frank
Hi,
meinst Du so ungefähr?
SELECT Ergebnisspalte 1, COUNT(*) FROM (SELECT Spalte 1 AS Ergebnisspalte 1, Spalte 2, Spalte 3 FROM tabelle GROUP BY Spalte 1, Spalte 2, Spalte 3) AS tab2 GROUP BY Ergebnisspalte 1
Gibt leider nur einen Fehler
1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT Spalte 1 AS Ergebnisspalte 1, Spalte 2, Spalte 3 FROM table GRO
Gruß
Habe jetzt folgende (in meinen Augen unschöne) Lösung gefunden: mit CONCAT() fasse ich die zweite und die dritte Spalte zusammen, checke diese mit Distinct und zähle das ganze gruppiert nach der Spalte 1.
SELECT COUNT(DISTINCT(CONCAT(Spalte 2, Spalte 3))), Spalte 1 FROM tabelle GROUP BY Spalte 1