Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल जॉइन फॉर्मेट - नेस्टेड इनर जॉइन

पठनीयता के लिए, मैंने क्वेरी को पुनर्गठित किया ... स्पष्ट शीर्ष-स्तर तालिका 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 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. बल्क इंसर्ट के साथ उच्चारण किए गए वर्ण सही ढंग से आयात नहीं किए गए

  2. सी#में SQL सर्वर के न्यूमेरिक के समतुल्य डेटाटाइप क्या है

  3. तालिका-मूल्यवान पैरामीटर को पैरामीटरयुक्त SQL कथन में पास करते समय 'स्केलर वैरिएबल घोषित करना चाहिए' त्रुटि

  4. कर्मचारी आईडी स्वचालित रूप से उपसर्ग के साथ उत्पन्न होता है

  5. यदि पैरामीटर शून्य है तो SQL सभी का चयन करें अन्यथा विशिष्ट आइटम लौटाएं