読みやすくするために、クエリを再構築しました...明らかに最上位レベルのTable1から始めて、Table3に結び付け、次にtable3をtable2に結び付けます。関係の連鎖をたどると、ずっとたどりやすくなります。
さて、あなたの質問に答えます。デカルト積の結果として、大きなカウントを取得しています。 Table3 に一致する Table1 の各レコードに対して、X * Y が得られます。次に、table3 と Table2 の間の一致ごとに同じ影響があります... Y * Z... したがって、テーブル 1 の 1 つの可能な ID の結果X * Y * Z レコードを持つことができます。
これは、テーブルの正規化またはコンテンツがどのようになっているかわからないことに基づいています...キーが主キーであるかどうか..
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
そのため、テーブル 1 をテーブル 3 に結合すると、(このシナリオでは) 12 のレコードが生成されます (それぞれが 1 で、それぞれが 3 で結合されます)。次に、テーブル 2 内の一致した各レコード (5 レコード) のすべてを繰り返します... 合計 60 ( 3 tbl1 * 4 tbl3 * 5 tbl2 ) カウントが返されます。
さて、それを取り上げて、何千もの記録に基づいて拡張すると、混乱した構造が牛を窒息させ (いわば) パフォーマンスを低下させる可能性があることがわかります.
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