![]() |
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: IbExpert/Zeos
Count mit Join über mehrere table
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:
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.
Tabelle 2
id id_tabelle1 Daten... 1 2 dfgh 2 3 jöpk 3 3 hjkhj 4 3 gzj versucht hab ich es damit:
SQL-Code:
Das liefert allerdings nur die richtigen Werte, wenn eines der beiden Count 0 zurückgibt.
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 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:
Wie kann man dieses Problem nun umgehen?, sodass es möglichst noch eine einzelne Abfrage bleibt?
zhn 1 0 //stimmt
sdfvb 0 1 //stimmt cfgf 6 6 //stimmt nicht, da es 2 und 3 heißen müsste. |
Re: Count mit Join über mehrere table
Das mit den Joins funktioniert manchmal nicht so, wie man es erwartet. Bei Deinem Problem würde ich Folgendes versuchen:
SQL-Code:
Select Daten,
(select count (*) from Tabelle2 where Tabelle2.ID_Tabelle1 = Tabelle1.ID) as Cnt2, (select count (*) from Tabelle3 where Tabelle3.ID_Tabelle1 = Tabelle1.ID) as Cnt3 from Tabelle1 |
Re: Count mit Join über mehrere table
Super, danke.
Jetzt funktioniert es. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz