Einzelnen Beitrag anzeigen

monta

Registriert seit: 18. Okt 2004
Ort: Dresden
141 Beiträge
 
#1

Count mit Join über mehrere table

  Alt 7. Mai 2006, 09:04
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: IbExpert/Zeos
Hallo,
ich hab eine Frage zur anwednung von Counts über mehrere Tabellen. Die Sache liegt wie folgt:

Ich habe 3 Tabellen:
Code:
Tabelle 1
id Daten...
1  zhn
2  sdfvb
3  cfgf
Code:
Tabelle 2
id id_tabelle1 Daten...
1     1        dfgh
2     3        jöpk
3     3        huhui
Code:
Tabelle 2
id id_tabelle1 Daten...
1     2        dfgh
2     3        jöpk
3     3        hjkhj
4     3        gzj
Nun wollte ich mittels eines Selects direkt die Tabelle eins abrufen und dazu jeweils die Anzahl der verbundenen Datensätze aus den anderen beiden Tabellen, welche sich auf tabelle1 beziehen.

versucht hab ich es damit:
SQL-Code:
SELECT DISTINCT (tabelle1.daten),
            COUNT (tabelle2.id) AS tabelle2anzahl,
            COUNT (tabelle3.id) AS tabelle3anzahl
     FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.id = tabelle2.id_tabelle1
          LEFT JOIN tabelle2 ON tabelle1.id = tabelle2.id_tabelle1 GROUP BY tabelle1.daten
Das liefert allerdings nur die richtigen Werte, wenn eines der beiden Count 0 zurückgibt.

Also für die ersten beiden Datensätze aus tabelle1 wird korrekt wiedergegeben.
Das Problem liegt im dritten, wenn beide Tabellen auf tabelle1 verweisen, werden die beiden Counts scheinbar addiert und zurückgegeben werden :
Code:
zhn 1  0   //stimmt
sdfvb 0  1   //stimmt
cfgf 6  6   //stimmt nicht, da es 2 und 3 heißen müsste.
Wie kann man dieses Problem nun umgehen?, sodass es möglichst noch eine einzelne Abfrage bleibt?
Johannes M.
  Mit Zitat antworten Zitat