Hallo,
offensichtlich meinst du den fall, daß es keine direkte 1:n beziehung gibt. (master:detail über mehrere keys)
Nein. Ich meine den Fall, der in [pref:t=76241&m=439108] beschrieben wurde.
mit left/right join wird die eine tabelle gemäß der where bedingung komplett gelesen, während die andere gemäß der on bedingung verknüpft wird, wobei fehlende verknüpfungen mit null ergänzt werden.
Nein. Es wird eine Datensatzmenge mit Feldern beider Tabellen gebildet, in der alle Datensätze der einen Tabelle enthalten sind. Felder aus der anderen Tabelle werden dann und so oft mit den entsprechenden Inhalten in die Datensatzmenge einverknüpft, wie die Datensätze dieser Felder der ON-Klausel entsprechen. Ist das nicht der Fall, ist der Wert dieser Felder in der Datensatzmenge NULL. Diese so entstandene Datensatzmenge wird dann entsprechend der WHERE-Klausel gefiltert.
also:
select count(t1.autor) as t1autor, count(t2.autor) as t2autor, t1.autor
from t1 left join t2 on t1.autor = t2.autor and t1.artikel = t2.artikel
group by t1.autorergibt ein 3 spaltiges resultset mit je einer zeile pro autor, wobei in den beiden anderen spalten die anzahl der sätze aus der 1. und 2. tabelle steht.
Nein.
Das angegebene Beispiel ist:
Inhalt der Tabelle Threads:
id=1 autor=1
id=2 autor=1
id=3 autor=3
id=4 autor=2
Inhalt der Tabelle Posts:
id=1 autor=2
id=2 autor=2
id=3 autor=1
id=4 autor=2
Dein
SELECT Threads.autor AS Threads_autor, Posts.autor AS Posts_autor
FROM Threads LEFT JOIN Posts ON Threads.autor = Posts.autor;
ergibt:
Threads_autor Posts_autor
1 1
1 1
3
2 2
2 2
2 2
Lässt man das nun zählen
SELECT Threads.autor, Count(Threads.autor) AS Threads_autor, Count(Posts.autor) AS Posts_autor
FROM Threads LEFT JOIN Posts ON Threads.autor = Posts.autor
GROUP BY Threads.autor;
ergibt das:
autor Threads_autor Posts_autor
1 2 2
2 3 3
3 1 0
Meine Lösung
SELECT autor, Count(*) AS Anzahl
FROM (SELECT autor FROM Threads UNION ALL SELECT autor FROM Posts) AS ThreadsPosts
GROUP BY autor;
ergibt:
autor Anzahl
1 3
2 4
3 1
Der Ausgangsposter wollte in [pref:t=76241&m=439108]:
Autor 1 = 3 Beiträge
Autor 2 = 4 Beiträge
Autor 3 = 1 Beitrag
viele Grüße
Axel