SQL: "Doppelt" GRUPPIEREN
Christian
- datenbank
Hallo zusammen und Nabend :-)
Weiß wer wie ich mehrere Spalten in der Gruppierungsklausel zusammen fügen kann??
Ich habe eine Tabelle mit zwei User-ID's - sagen wir 17 und 4 *schleichwerbung für casino seiten mach* :-)
Jetzt möchte ich die Anzahl der Zeilen mittels COUNT() auslesen, wo eine bestimmte ID mehrfach vorhanden ist.
Etwas komplexer:
Eintrag 1: 18 und 17
Eintrag 2: 17 und 4
Eintrag 3: 4 und 17
Eintrag 4: 18 und 4
Jetzt sollen bei der Gruppierung beide Spalten berücksichtigt werden so daß ich folgendes Ergebnis erhalte:
Anzahl 3 - ID 17
Anzahl 3 - ID 4
Anzahl 2 - ID 18
Ich hoffe ich hab mein Anliegen gut erklärt und die GROUP BY Manual wirklich gut durchgelesen ;-)
Hat wer eine Idee?
Grüße
Christian
Hi,
Ich hoffe ich hab mein Anliegen gut erklärt und die GROUP BY Manual wirklich gut durchgelesen ;-)
jupp, bei GROUP BY findest Du nichts, denn GROUP BY gruppiert nur nach einer _Kombination_ von Spalten, nicht nach beliebig verteilten Werten. Schlussfolgerung: Du musst zunächst im SELECT dafür sorgen, dass Du _eine_ Spalte vorliegen hast, in der alle Deine Werte stehen. Dazu bietet sich beispielsweise UNION an.
Cheatah
Ich hoffe ich hab [...] die GROUP BY Manual wirklich gut durchgelesen ;-)
jupp [...]
Da bin ich aber froh, schau ich mir direkt mal an schonmal Danke :-)
Abend,
Ich hoffe ich hab [...] die GROUP BY Manual wirklich gut durchgelesen ;-)
jupp [...]Da bin ich aber froh, schau ich mir direkt mal an schonmal Danke :-)
sei nicht zu frueh froh. Du solltest einen UNION SELECT auf dieselbe Tabelle machen, aber beim zweiten SELECT das zweite (beim ersten das erste und nur das erste) und nur das zweite Datenfeld einschliessen. Dann gehst Du auf die so zu sagen duplizierte Datensatzmenge und machst die Gruppierung mit GROUP BY auf das nun "en bloc" vorliegende erste und zweite Datenfeld.
Plutino
Also:
(select freund1 as f from freunde) union all (select freund2 as f from freunde);
Klappt wunderbar, aber: irgendwie krieg ich die COUNT(*) Formel da nicht mehr unter :-(
Also:
(select freund1 as f from freunde) union all (select freund2 as f from freunde);
Klappt wunderbar, aber: irgendwie krieg ich die COUNT(*) Formel da nicht mehr unter :-(
Mach einen Unter-SELECT auf die zusammengfuehrte Datensatzmenge:
SELECT
count(f)
FROM
(
select freund1 as f from freunde union all select freund2 as f from freunde
)
GROUP BY
f
Da kam ne Fehlermeldung "blabla ... must habe it's own key".
So klappt es:
SELECT COUNT(*) AS anzahl, f FROM (SELECT freund1 f FROM freunde
UNION ALL
SELECT freund2 f FROM freunde) AS tabelle
GROUP BY f
ORDER BY f DESC;
Danke für Eure schnelle Hilfe :-)
Jetzt muss ich nur noch ne User-Tabelle draufjoinen ;-)
Das schaff ich bestimmt :-)