पठनीयता के लिए, मैंने क्वेरी को पुनर्गठित किया ... स्पष्ट शीर्ष-स्तर तालिका 1 से शुरू हुआ, जो तब तालिका 3 से जुड़ा हुआ है, और फिर तालिका 3 तालिका 2 से जुड़ा हुआ है। यदि आप रिश्तों की श्रृंखला का पालन करते हैं तो पालन करना बहुत आसान है।
अब, आपके प्रश्न का उत्तर देने के लिए। कार्टेशियन उत्पाद के परिणामस्वरूप आपको बड़ी संख्या मिल रही है। तालिका 1 में प्रत्येक रिकॉर्ड के लिए जो तालिका 3 में मेल खाता है, आपके पास एक्स * वाई होगा। फिर, तालिका 3 और तालिका 2 के बीच प्रत्येक मैच के लिए समान प्रभाव होगा ... वाई * जेड ... तो तालिका 1 में केवल एक संभावित आईडी के लिए आपका परिणाम 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) की कुल संख्या लौटा दी जाएगी।
तो, अब, इसे लें और अपने 1000 के रिकॉर्ड के आधार पर विस्तार करें और आप देखें कि कैसे एक गड़बड़ संरचना एक गाय (बोलने वाली) को दबा सकती है और प्रदर्शन को मार सकती है।
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