Count in joins

3 Datenbanken

db2 ist eine Userliste, mit der id nummer
In db1 ist jedes Login mit id verzeichnet
In db3 ist jeder Seitenaufruf mit id verzeichnet

Jetzt möchte ich eine Top-Ten-Liste aufstellen
ID,Name,Seitenaufrufe,Logins

folgendes Statement macht jedoch
ID,Name,Seitenaufrufe,Seitenaufrufe

SELECT db1.user_nummer,CONCAT(db2.vorname,’ ‚,db2.nachname) as b,COUNT(db1.user_nummer) as a,COUNT(db3.nummer) as c FROM session as db1, schule as db2, notencalc as db3 WHERE db2.nummer=db1.user_nummer and db3.nummer=db1.user_nummer and db1.user_nummer is not null and db1.user_nummer!=‘’ GROUP BY db1.user_nummer ORDER BY a DESC LIMIT 5

Kann mir jemand helfen???

Hallo,

Du erwähnst im Betreff schon Joins; wenn Du Dich ein wenig mit INNER und OUTER JOINS beschäftigst, wird Dir sehr schnell klar, warum in beiden Ergebnisspalten die gleichen Werte stehen müssen.
Zu Deinem Problem: ohne Unterabfragen wirst Du wohl nicht viel weiter kommen. Probier mal Folgendes:

SELECT V1.ID, V1.Name, V1.AnzahlLogins, V2.AnzahlSeitenzugriffe FROM [SELECT db2.ID AS ID, db2.Name AS Name, COUNT(db1.ID) AS AnzahlLogins FROM db2 INNER JOIN db1 ON db2.ID=db1.ID GROUP BY db2.ID, db2.Name]. AS V1 INNER JOIN [SELECT db2.ID AS ID, COUNT(db3.ID) AS AnzahlSeitenzugriffe FROM db3 INNER JOIN db2 ON db3.ID=db2.ID GROUP BY db2.ID]. AS V2 ON V1.ID=V2.ID;

Wie Du siehst, werden erstmal in zwei Unterabfragen die Werte berechnet, deren INNER JOIN dann die Werte für die Hauptabfrage liefert.

Marc

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

GEHT NICHT!
Datenbank schule auf localhost
Fehler
SQL-Befehl :

SELECT V1.ID,
V1.Name,
V1.AnzahlLogins,
V2.AnzahlSeitenzugriffe FROM [
SELECT db_da.nummer AS ID,
db_da.Nachname AS Name,
COUNT(db_pi.user_nummer) AS AnzahlLogins
FROM schule AS db_da
INNER JOIN session as db_pi
ON db_da.nummer=db_pi.user_nummer
GROUP BY db_da.nummer
]. AS V1
INNER JOIN [
SELECT db_da.nummer AS ID,
COUNT(db_si.nummer) AS AnzahlSeitenzugriffe
FROM notencalc AS db_si
INNER JOIN schule AS db_da
ON db_si.nummer=db_da.nummer
GROUP BY db_da.nummer
]. AS V2
ON V1.ID=V2.ID LIMIT 0, 30

MySQL meldet:

You have an error in your SQL syntax near ‚[
SELECT db_da.nummer AS ID,
db_da.Nachname AS Name,
COUNT(db_pi.user_n‘ at line 4