Hallo,
ich habe 2 Tabellen:
Tabelle USERS in der alle User aufgeführt sind - jeder User ist einem Team (UserDepartment) zugeordnet!
Code:
++++++++++++++++++
+ USERS +
++++++++++++++++++
+ UserID +
+ UserName +
+ UserDepartment +
++++++++++++++++++
Und die Tabelle analytics - Sobald im Tool eine Seite angeklickt wird, wird ein Datensatz mit Uhrzeit, aufgerufene Seite und Abteilung des Mitarbeiters in die Datenbank geschrieben:
Code:
++++++++++++++++++
+ ANALYTICS +
++++++++++++++++++
+ Department +
+ Time +
+ Site +
++++++++++++++++++
Nun habe ich zunächst eine Übersicht, wo alle Teams mit der Anzahl der User aufgeführt sind:
Code:
Department | Users
++++++++++++++++++++
Abteilung 1 | 12
Abteilung 2 | 10
Abteilung 3 | 3
SQL:
SELECT COUNT( * ) AS ZeilenUsers , UserDepartment
FROM users
GROUP BY UserDepartment
ORDER BY ZeilenUsers DESC
Nun möchte ich noch die Pagehits pro Team dahinter geschrieben bekommen, sodass dies dann etwa so ausschaut:
Code:
Department | Users | Pagehits
+++++++++++++++++++++++++++++++
Abteilung 1 | 12 |
Abteilung 2 | 10 | 123
Abteilung 3 | 3 | 10
Es kann auch sein, dass eine Abteilung gar keine Hits hat, sodass ein Join erforderlich ist!
Folgender Query zählt durch den LEFT-Join leider alle Zeilen, die er durch den Join rausholt:
Code:
SELECT COUNT(UserDepartment) AS ZeilenUsers , u.UserDepartment, Count (usersa_team) AS ZeilenVisits
FROM users AS u
LEFT JOIN users_analytics AS a ON (u.UserDepartment=a.usersa_department)
GROUP BY u.UserDepartment
ORDER BY ZeilenUsers DESC
Wie kann man das anders lösen?
Vielen Dank für die Hilfe im Voraus!
Grüße, Stefan