Aus Gründen der Lesbarkeit habe ich die Abfrage umstrukturiert ... beginnend mit der scheinbar obersten Ebene, die Tabelle1 ist, die dann mit Tabelle3 und dann mit Tabelle3 verknüpft ist. Viel einfacher zu verfolgen, wenn Sie der Beziehungskette folgen.
Nun, um Ihre Frage zu beantworten. Als Ergebnis eines kartesischen Produkts erhalten Sie eine große Anzahl. Für jeden Datensatz in Tabelle1, der in Tabelle3 übereinstimmt, haben Sie X * Y. Dann hat jede Übereinstimmung zwischen Tabelle3 und Tabelle2 die gleiche Auswirkung ... Y * Z ... Ihr Ergebnis also für nur eine mögliche ID in Tabelle 1 kann X * Y * Z Datensätze haben.
Dies basiert darauf, dass Sie nicht wissen, wie die Normalisierung oder der Inhalt Ihrer Tabellen ist ... ob der Schlüssel ein PRIMARY-Schlüssel ist oder nicht ...
Ex:
Table 1
DiffKey Other Val
1 X
1 Y
1 Z
Table 3
DiffKey Key Key2 Tbl3 Other
1 2 6 V
1 2 6 X
1 2 6 Y
1 2 6 Z
Table 2
Key Key2 Other Val
2 6 a
2 6 b
2 6 c
2 6 d
2 6 e
Das Verbinden von Tabelle 1 mit Tabelle 3 ergibt also (in diesem Szenario) 12 Datensätze (jeder in 1, verbunden mit jedem in 3). Dann wird all das noch einmal für jeden übereinstimmenden Datensatz in Tabelle 2 (5 Datensätze) ... insgesamt 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 )count zurückgegeben.
Nehmen Sie das jetzt und erweitern Sie es basierend auf Ihren Tausenden von Aufzeichnungen, und Sie sehen, wie eine verkorkste Struktur eine Kuh ersticken (sozusagen) und die Leistung töten kann.
SELECT
COUNT(*)
FROM
Table1
INNER JOIN Table3
ON Table1.DifferentKey = Table3.DifferentKey
INNER JOIN Table2
ON Table3.Key =Table2.Key
AND Table3.Key2 = Table2.Key2