Mailinglisten-Archive |
Hallo zusammen, ich habe schon wieder eine Frage zu GROUP BY. Ich stehe - schon wieder - vor dem Problem, dass ich eine entsprechende Ausgabe nicht so hinbekomme, wie ich das gerne hätte. Hintergrund: Es gibt in meiner DB verschiedene Projekte, zu denen über eine NM-Verknüpfung verschiedene Personen zugeordnet werden können. projekte ------------------------ projektname ------------------------ projekt1 projekt2 projekt3 [...] projektN ------------------------ Die NM-Tabelle sieht so aus ----------------------- prjkektname username projekt1 user1 projekt2 user1 projekt3 user1 projekt1 user2 [...] projektN userN ----------------------- Jetzt ist es ja ganz einfach, die Anzahl der zugewiesenen Benutzer pro Projekt rauszufischen SELECT projektname, COUNT(username) FROM projektname WHERE projektname like 'projekt1' Hier erzeugt mir SQL in der Ausgabemenge eine Tabelle mit einer Zeile und einer Spalte, in der das Ergebnis steht: -------- 2 -------- Jetzt habe ich aber das Problem, dass einige Projekte logisch zusammen gehören, und ich herausfinden muß, wie viele Personen z.B: in Projekt 1, 3 und 10 stecken - und zwar so, dass dieselben Benutzernamen, die überall vorkommen, nur ein einziges Mal gezählt werden dürfen. SELECT projektname, COUNT(username) FROM projektname WHERE projektname like 'projekt1' OR projektname like 'projekt3' OR projektname like 'projekt10' GROUP BY projektname Hier erhalte ich dann eine Liste, die in etwa so aussieht ------------------------- projekt1 2 projekt3 1 projekt10 8 ------------------------- Aber: Es ist sicher, dass doppelte Benutzernamen eben *nicht* rausgefiltert wurden und als ein einziger zusammengefaßt sind. Wie kann ich es also schaffen, dass doppelte Benutzer in verschiedenen Projekten als 1 gezählt werden? Danke für Eure Hilfe. Grüße Tim -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive