दिलचस्प पोस्ट
JSON को XML या XML को JSON में कनवर्ट करने के लिए कैसे? एक सरल सी # डीएलएल – मैं इसे एक्सेल, एक्सेस, वीबीए, वीबी 6 से कैसे कॉल करूं? मैं Word फ़ाइलों को पीडीएफ़ प्रोग्राम में परिवर्तित कैसे करूं? फेसलेट टेम्पलेट में सीएसएस / जेएस / इमेज संसाधन का संदर्भ कैसे दिला जाए? कैसे एक प्रतिबद्ध में सभी फाइलों की सूची है? स्तंभ मान के अनुसार 2 आयामी सरणी कैसे सॉर्ट करें? जावास्क्रिप्ट: ऑब्जेक्ट ऑर्लेट को एट्रिब्यूट्स पर आधारित कैसे फ़िल्टर करें? एआरएम से सी कॉलिंग कन्वेंशन, रजिस्टरों को बचाने के लिए जावा में सूची <integer> को int कन्वर्ट करने के लिए कैसे करें? android.os.FileUriExposedException: फ़ाइल: ///storage/emulated/0/test.txt Intent.getData () के माध्यम से ऐप से परे खुलासा जेडीबीसी बैच डालने के प्रदर्शन नोड.जेएस मॉड्यूल और फ़ंक्शन में "यह" का अर्थ MySQLi में अपवादों की क्वेरी त्रुटियों को चालू करना शून्य-आधारित माह की संख्या एक संग्रहीत कार्यविधि में "SET XACT_ABORT चालू" का उपयोग करने का क्या लाभ है?

क्रॉस जॉइन बनाम इंन्अर SQL सर्वर 2008 में शामिल हों

CROSS JOIN और INNER JOIN क्या अंतर है?

क्रॉस जॉइन करें:

 SELECT Movies.CustomerID, Movies.Movie, Customers.Age, Customers.Gender, Customers.[Education Level], Customers.[Internet Connection], Customers.[Marital Status], FROM Customers CROSS JOIN Movies 

आंतरिक रूप से जुड़ा:

 SELECT Movies.CustomerID, Movies.Movie, Customers.Age, Customers.Gender, Customers.[Education Level], Customers.[Internet Connection], Customers.[Marital Status] FROM Customers INNER JOIN Movies ON Customers.CustomerID = Movies.CustomerID 

कौन सा बेहतर है और मैं किसी एक का उपयोग क्यों करूं?

वेब के समाधान से एकत्रित समाधान "क्रॉस जॉइन बनाम इंन्अर SQL सर्वर 2008 में शामिल हों"

यदि आप 1 से 1 मैच के साथ प्रत्येक तालिका में 100 पंक्तियाँ हैं, तो क्रॉस जॉब पंक्तियों को गठजोड़ नहीं करता है, आपको 10,000 परिणाम मिलते हैं, इनरजॉयन एक ही स्थिति में केवल 100 पंक्तियां लौटाएंगे।

ये 2 उदाहरण एक ही परिणाम वापस करेंगे:

क्रॉस जॉइन में

 select * from table1 cross join table2 where table1.id = table2.fk_id 

आंतरिक रूप से जुड़ा

 select * from table1 join table2 on table1.id = table2.fk_id 

अंतिम विधि का उपयोग करें

यहां क्रॉस जॉइन और इनर जॉइन में सबसे अच्छा उदाहरण है।

निम्न तालिकाओं पर विचार करें

टेबल: Teacher

 x------------------------x | TchrId | TeacherName | x----------|-------------x | T1 | Mary | | T2 | Jim | x------------------------x 

टेबल: Student

 x--------------------------------------x | StudId | TchrId | StudentName | x----------|-------------|-------------x | S1 | T1 | Vineeth | | S2 | T1 | Unni | x--------------------------------------x 

1. इनर जॉइन करें

इनर में शामिल होने वाली पंक्तियों का चयन करता है जो तालिका दोनों को संतुष्ट करता है

विचार करें कि हमें उन शिक्षकों को खोजने की जरूरत है जो कक्षा शिक्षक हैं और उनके संबंधित छात्र हैं। उस स्थिति में, हमें JOIN या INNER JOIN और लागू करने की आवश्यकता होगी

यहां छवि विवरण दर्ज करें

सवाल

 SELECT T.TchrId,T.TeacherName,S.StudentName FROM #Teacher T INNER JOIN #Student S ON T.TchrId = S.TchrId 
  • एसक्यूएल FIDDLE

परिणाम

 x--------------------------------------x | TchrId | TeacherName | StudentName | x----------|-------------|-------------x | T1 | Mary | Vineeth | | T1 | Mary | Unni | x--------------------------------------x 

2. आगे बढ़ें

क्रॉस जॉइन पहली तालिका से सभी पंक्तियां और दूसरी तालिका से सभी पंक्तियों का चयन करता है और कार्टेशियन उत्पाद के रूप में दिखाता है, सभी संभावनाओं के साथ

मान लें कि हमें विद्यालय में सभी शिक्षकों और कक्षा शिक्षकों के भले ही छात्रों को ढूंढने की आवश्यकता है, हमें CROSS JOIN लागू करने की आवश्यकता है।

यहां छवि विवरण दर्ज करें

सवाल

 SELECT T.TchrId,T.TeacherName,S.StudentName FROM #Teacher T CROSS JOIN #Student S 
  • एसक्यूएल FIDDLE

परिणाम

 x--------------------------------------x | TchrId | TeacherName | StudentName | x----------|-------------|-------------x | T2 | Jim | Vineeth | | T2 | Jim | Unni | | T1 | Mary | Vineeth | | T1 | Mary | Unni | x--------------------------------------x 

क्रॉस जॉइन = (इनर) JOIN = कॉमा (",")

टीएल; डीआरआरओआरएस जोन, एसक्यूएल (इनर) जॉइन और "," (कॉमरा के अलावा मूल्यांकन क्रम के लिए निम्न प्राथमिकता के अलावा) में एकमात्र अंतर यह है कि (INNER) JOIN एक चालू है जबकि क्रॉस जॉइन और कॉमा में नहीं है।


पुनः मध्यवर्ती क्रॉस उत्पादों

ये तीनों प्रत्येक तालिका से एक पंक्ति के सभी संभव संयोजनों के एक मध्यवर्ती वैचारिक एसक्यूएल-शैली के कार्टेशियन क्रॉस उत्पाद का उत्पादन करते हैं। यह चालू है और / या जहां पंक्तियों की संख्या कम हो जाती है एसक्यूएल फ्यूल्ड

एसक्यूएल मानक परिभाषित करता है <कॉमा> क्रॉस प्रोडक्ट (7.5 1.b.ii), <cross join> के माध्यम से <कॉमा> (7.7 1. ए) के माध्यम से और <search condition> <comma> plus WHERE (7.7 1) के माध्यम से जुड़ें। ख)।

जैसा विकिपीडिया कहता है:

क्रॉस जॉइन में

क्रॉस जॉइन शामिल होने में तालिका से पंक्तियों के कार्टेशियन उत्पाद देता है दूसरे शब्दों में, यह दूसरी तालिका से प्रत्येक पंक्ति के साथ पहली पंक्ति से प्रत्येक पंक्ति को जोड़ते हुए पंक्तियों का उत्पादन करेगा।

आंतरिक रूप से जुड़ा

[…] सम्मिलित होने के परिणाम तालिका में सभी अभिलेखों के पहले कार्टेशियन उत्पाद (या क्रॉस जॉइन) ले जाने के परिणाम के रूप में परिभाषित किए जा सकते हैं (टेबल ए में प्रत्येक रिकार्ड में प्रत्येक रिकॉर्ड को जोड़कर) और फिर लौट रहे हैं सभी अभिलेख जो सम्मिलित विधेय को संतुष्ट करते हैं

"अंतर्निहित प्रवेश नोटेशन" केवल चयन कथन के एफआरआर खंड में शामिल होने के लिए तालिकाओं को सूचीबद्ध करता है, अल्पविराम का उपयोग करके उन्हें अलग करता है इस प्रकार यह एक क्रॉस जोन निर्दिष्ट करता है

पुन: बाहरी जॉन्स और बनाम बनाम कहाँ देखें।

तालिकाओं के बीच की तुलना क्यों करते हैं?

प्रत्येक तालिका में ऐसी पंक्तियां होती हैं जो एक निश्चित भरने वाली इन- the- [name-] रिक्त पदों को सही बनाती हैं:

  • एक आधार तालिका में पंक्तियाँ हैं जो कुछ डीबीए-दिए गए बयान को सच कहते हैं।
 -- rows where movie <Movies.CustomerID> has name <Movies.Movie> and ... SELECT * FROM Movies 
  • एक जुड़ने वाले मध्यवर्ती क्रॉस उत्पाद में उन पंक्तियों को रखा जाता है जो कथन को संतुष्ट करते हैं और इसके ऑपरेंड के विवरण
  -- rows where movie <Movies.CustomerID> has name <Movies.Movie> and ... AND customers <Customers.ID> has age <Customers.Age> and ... SELECT * FROM Customers CROSS JOIN Movies 
  • एक और बयान देने के लिए पर और जहां स्थितियां आवृत हैं मान फिर से वह पंक्ति है जो उस कथन को संतुष्ट करता है
 -- rows where movie <Movies.CustomerID> has name <Movies.Movie> and ... AND customer <Customers.ID> has age <Customers.Age> and ... AND <Customers.CustomerID> = <Movies.CustomerID> AND <Customers.CustomerAge> >= <Movies.MinimumAge> AND <Customers.Age> = 18 SELECT * FROM Movies JOIN Customers ON Customers.CustomerID = Movies.CustomerID AND Customers.CustomerAge >= Movies.MinimumAge WHERE Customers.Age = 18 

तालिकाओं के बीच समानता के लिए विशेष रूप से तुलना कॉलम में इसका अर्थ है कि सम्मिलित तालिका के 'बयान के कुछ हिस्सों में उन कॉलम के लिए समान मूल्य होता है। यह सिर्फ संयोग है कि कई पंक्तियों को आम तौर पर तालिकाओं के बीच समानता की तुलना से हटा दिया जाता है

सिर्फ पंक्तियों के बयान के लिए एसक्यूएल लिखें जो आप चाहते हैं!

प्रश्नों (और तालिकाओं बनाम शर्तों) के अर्थ को पुनः देखें

क्रॉस जॉइन बनाम (INNER) का प्रयोग करें बनाम कॉम से जुड़ें

आम सम्मेलन है:

  • क्रॉस जॉइन का उपयोग करें और केवल जब आप तालिकाओं के बीच कॉलम की तुलना नहीं करते हैं इससे पता चलता है कि तुलना की कमी जानबूझकर थी।
  • उपयोग (INNER) जब और केवल जब आपके पास तालिकाओं (और संभवत: अन्य तुलना) के बीच तुलना की जाती है, तो इसमें शामिल हों।
  • अल्पविराम का उपयोग न करें

आमतौर पर तालिकाओं के बीच की तुलना भी नहीं की जाती है, जहां कहीं एक भी नहीं है। लेकिन उन्हें दाएं, बाएं या पूर्ण (बाहरी) जुड़ने के तर्क के लिए उचित पंक्तियां प्राप्त करने के लिए एक (INNER) में शामिल होना पड़ सकता है।

ओवरलोडिंग "क्रॉस जॉइन"

दुर्भाग्यवश "क्रॉस जॉइन" शब्द का उपयोग इसके लिए किया जाता है:

  • मध्यवर्ती क्रॉस उत्पाद
  • क्रॉस जॉइन करें
  • किसी भी कॉलम (ओं) की तुलना किसी दूसरे कॉलम (किसी अन्य कॉलम (कॉलम) से नहीं की जाती है (क्योंकि यह मध्यवर्ती क्रॉस-उत्पाद पंक्तियों में से कई वापस लौट जाती है)

ये विभिन्न अर्थ चकित होते हैं। (उदाहरण के उत्तर में और अन्य टिप्पणियों के अनुसार।)

पुनश्च क्रॉस जॉइन, (इनर) जॉइन और कॉमा के अर्थ में इंटरमीडिएट क्रॉस उत्पाद की भूमिका को देखते हुए, उपरोक्त सम्मेलन के लिए तर्क अस्थिर हैं। एक क्रॉस जॉइन या कॉमा एक (INNER) की तरह है जो कि एक असली स्थिति पर है। एक मध्यवर्ती क्रॉस उत्पाद, चालू और जहां सभी संबंधित विधेयता में एक और हालांकि, इन्नेर जॉइन में "मैचों को एक शर्त बनायी जाती है", यह सिर्फ ऐसी पंक्तियां रखता है जो किसी स्थिति से मेल खाते हैं। एसक्यूएल में अल्पविराम को पूरक करने के लिए एकमात्र कारण था बाहरी अवसरों को लिखना बेशक, एक अभिव्यक्ति को इसका अर्थ स्पष्ट करना चाहिए; लेकिन स्पष्टता किसी विशेष समझ के सापेक्ष है।)

आंतरिक रूप से जुड़ा

जुड़ें जो केवल पंक्तियों को दिखाता है जो दोनों जुड़ने की तालिकाओं में एक मैच होती है जिसे आंतरिक जुड़ने के रूप में जाना जाता है यह क्वेरी में डिफ़ॉल्ट रूप से शामिल है और डिज़ाइनर को देखें।

आंतरिक सम्मिलित होने के लिए सिंटैक्स

 SELECT t1.column_name,t2.column_name FROM table_name1 t1 INNER JOIN table_name2 t2 ON t1.column_name=t2.column_name 

क्रॉस में शामिल हों

एक क्रॉस जॉइन होने में शामिल होने वाले टेबल के कार्टेशियन उत्पाद का उत्पादन होता है एक कार्टेशियन उत्पाद का आकार दूसरी तालिका में पंक्तियों की संख्या के गुणा से पहले तालिका में पंक्तियों की संख्या होती है।

क्रॉस के लिए सिंटेक्स शामिल हों

 SELECT * FROM table_name1 CROSS JOIN table_name2 

या हम इसे किसी अन्य तरीके से भी लिख सकते हैं

 SELECT * FROM table_name1,table_name2 

क्रॉस में शामिल होने के लिए नीचे दिए गए प्रश्न की जांच करें

उदाहरण

 SELECT * FROM UserDetails CROSS JOIN OrderDetails 

या

 SELECT * FROM UserDetails, OrderDetails 

कृपया याद रखें, यदि एक WHERE क्लॉज जोड़ा गया है, तो क्रॉस जॉइन इनर इनर्यूज के रूप में व्यवहार करता है। उदाहरण के लिए, निम्नलिखित Transact-SQL क्वेरीज़ एक ही परिणाम सेट उत्पन्न करते हैं। कृपया http://technet.microsoft.com/en-us/library/ms190690(v=sql.105).aspx देखें

एसक्यूएल सर्वर निम्न की सरल संकेतन भी स्वीकार करता है:

 SELECT AF, BG, CH FROM TABLE_A A, TABLE_B B, TABLE_C C WHERE AX = BX AND BY = CY 

इस सरल संकेतन का उपयोग करते हुए, किसी को आंतरिक और पार मिलना के बीच अंतर के बारे में चिंता करने की जरूरत नहीं है। दो "चालू" खंडों के बजाय, एक एकल "WHERE" खंड है जो नौकरी करता है। यदि आपको पता चलने में कोई कठिनाई है कि "जोन" "चालू" खंड कहाँ जाते हैं, तो "जॉइन" नोटेशन को छोड़ दें और ऊपर के सरलतम का उपयोग करें

यह धोखा नहीं है

दोनों तालिकाओं पर शर्त पूरी हो गई है, अर्थात दोनों तालिकाओं में आम कॉलम के सटीक मिलान

क्रॉस का इस्तेमाल करते हुए क्वेरी लिखते समय परिणामों में शामिल होने के कारण दोनों तालिकाओं में रिकॉर्ड्स की संख्या के कार्टेशियन उत्पाद की तरह है। उदाहरण के लिए यदि तालिका 1 में 2 रिकॉर्ड और तालिका 2 में 3 रिकॉर्ड हैं तो क्वेरी का परिणाम 2 * 3 = 6 रिकॉर्ड है।

इसलिए जब तक आपको यह ज़रूरत नहीं है तब तक क्रॉस जॉय के लिए मत जाओ।

क्रॉस जॉइन और अंदरूनी हिस्सेदारी एकमात्र अंतर के समान है, जिसमें आंतरिक रूप से शामिल होने के साथ हम कार्तीय उत्पाद के कुछ परिणाम फ़िल्टर करते हैं

 table1 x--------------------------------------x | fieldA | fieldB | fieldC | x----------|-------------|-------------x | A | B | option1 | | A | B1 | option2 | x--------------------------------------x table2 x--------------------------------------x | fieldA | fieldB | fieldC | x----------|-------------|-------------x | A | B | optionB1 | | A1 | B1 | optionB2 | x--------------------------------------x cross join A,B,option1,A,B,optionB1 A,B,option1,A1,B1,optionB2 A,B1,option2,A,B,optionB1 A,B1,option2,A1,B1,optionB2 inner join on field1 (only with the value is the same in both tables) A,B,option1,A,B,optionB1 A,B1,option2,A,B,optionB1 inner join on field1 A,B,option1,A,B,optionB1 

यह हमारे डेटा के डिजाइन पर है, जहां हम यह तय करते हैं कि इस क्षेत्र का केवल एक ही मामला है जिसमें हम शामिल होने के लिए उपयोग कर रहे हैं। केवल पार से जुड़ें दोनों तालिकाओं में शामिल हों और केवल विशेष बूलियन अभिव्यक्ति को पूरा करने वाली पंक्तियां मिलें

ध्यान दें कि यदि हम जो फ़ील्ड कर रहे हैं तो दोनों तालिकाओं में शून्य हो जाएगा हम फिल्टर को पास करेंगे नल से बचने या अनुमति देने के लिए अतिरिक्त नियम जोड़ने के लिए यह हमारे या डेटाबेस निर्माता पर निर्भर है। बुनियादी बातों का पालन करना यह सिर्फ एक क्रॉस इनवेक्शन है, जिसके बाद एक फिल्टर होता है।

अंदरूनी हिस्सेदारी में दो तालिकाओं के बीच मिलान किए गए रिकॉर्ड्स का नतीजा दिया जाएगा, जहां क्रॉस जॉय से आप दो तालिकाओं के बीच संभव संयोजन प्रदान कर सकते हैं।