JOINS
कभी-कभी हमें एक से अधिक टेबल से डाटा की आवश्यकता होती हैं और इसके लिए हम उन्हें सिंगल टेबल के रूप में लेते हैं। मल्टिपल टेबल को सिंगल टेबल में जोड़कर हम सिंगल SQL स्टेटमेंट से ही डाटा मेनिप्यूलेट कर सकते हैं। टेबल्स उन कॉलम्स पर जुड़े होते हैं, टेबल्स में जिनका डाटा टाईप और डाटा विड्थ समान होती हैं।
ज्वाइन्स को समझने के लिए हम निम्न दो टेबल्स पर विचार करेंगे।
Course
SUB | Subject | Faculty |
01 | VB | Suvarna |
02 | DBMS | Ruchir |
03 | Java | Ritu |
04 | C++ | Sudhir |
05 | Oracle | Devendra |
Registration
STUD ID | Name | Subject |
1001 | Dhinendra | Java |
1002 | Piyush | C++ |
1003 | Paridhi | VB |
1004 | Monika | MIS |
1005 | Pooja | HTML |
1) इनर ज्वाइन या इक्वी ज्वाइन
इनर ज्वाइन सबसे सरल ज्वाइन हैं इसमें ज्वाइनिंग कंडीशन, कॉमन कॉलम्स की वैल्यूज के बीच समानता पर आधारित होती हैं। इस प्रकार के ज्वाइन में कॉमन रिजल्ट टेबल में निरूपयोगी तरीके से दिखाई देते हैं।
क्वेरी :- Select * from Course, Registration Where Course.Subject = Registration.Subject;
रिजल्ट :-
SUB | Subject | Faculty | Stud ID | Name | Subject |
1 | VB | Suvarna | 1003 | Paridhi | VB |
3 | Java | Ritu | 1001 | Dhinendra | Java |
4 | C++ | Sudhir | 1002 | Piyush | C++ |
यहाँ सब्जेक्ट आऊटपुट में दो बार नजर आता हैं। आऊटपुट यह दर्शाता हैं कि सब्जेक्ट मैच कर लिए गए हैं और यह कि मेचिंग एक रो देती हैं।
2) नैचुरल ज्वाइन या नैचरल इनर ज्वाइन
नैचरल ज्वाइन इक्वी ज्वाइन जैसा होता हैं। इसमें अंतर सिर्फ इतना हैं कि डुप्लीकेट कॉलम्स में से एक हटा दिया जाता हैं। नेचरल ज्वाइन उपयोग में लाया जाने वाला सबसे आम ज्वाइन ऑपरेशन हैं।
क्वेरी :- Select Sub id, Faculty, Course, Subject, Stud id, Name from Course, Registration Where
Course.Subject = Registration.Subject;
रिजल्ट :-
SUB ID | Faculty | Subject | Stud ID | Name |
1 | Suvarna | VB | 1003 | Paridhi |
3 | Ritu | Java | 1002 | Dhinendra |
4 | Sudhir | C++ | 1001 | Piyush |
3) Outer Join
दो टेबल्स को ज्वाइन करते समय यह आवश्यक नहीं हैं कि एक टेबल रो अन्य टेबल में मैच करें। आऊटर ज्वाइन के उपयोग से ऐसी इंफॉर्मेशन मिल सकती हैं, जिसमें वे रोज जिनकी कॉमन कॉलम में मेचिंग वैल्यू नहीं हो, भी रिजल्ट टेबल में शामिल कर ली जाँए। आऊटर ज्वाइन दो प्रकार के होते हैं – लेफ्ट आऊटर ज्वाइन व राईट आऊटर ज्वाइन।
(i) लेफ्ट आऊटर ज्वाइन :- लेफ्ट आऊटर ज्वाइन में ज्वाइन कंडीशन (Course Subject = Registration Course (+)) की बांयी और के टेबल्स के सारे रिकॉर्ड प्रदर्शित किए जाते हैं। इसी प्रकार कंडीशन के दायीं और के सारे मेंचिग रिकॉर्ड रिकॉर्ड प्रदर्शित किए जाते हैं। ज्वाइन कंडीशन के बायीं और के टेबल के उन रिकॉर्डस के लिए जिनकी दायीं और कोई मेचिंग नहीं हैं, नल प्रदर्शित किया जाता हैं।
क्वेरी :- Select * from Course, Registration Where Course.Subject = Registration.Subject (+);
रिजल्ट :-
Sub ID | Subject | Faculty | Stud ID | Name | Subject |
1 | VB | Suvarna | 1003 | Paridhi | VB |
2 | DBMS | Ruchir | NULL | NULL | NULL |
3 | Java | Ritu | 1001 | Dhinendra | JAVA |
4 | C++ | Sudhir | 1002 | Piyush | C++ |
5 | Oracle | Devendra | Null | NULL | NULL |
रिजल्ट टेबल से डुप्लीकेट कॉलम हटाने के लिए हम फील्ड नेम्स को खासतौर पर स्पेसिफाय कर सकते हैं (जैसा हमने नैचरल ज्वाइन में किया था।) और इसे नैचरल लेफ्ट आऊटर ज्वाइन कहा जा सकता हैं।
(ii) राईट आऊटर ज्वाइन :- राईट आऊटर ज्वाइन में ज्वाइन कंडीशन (Course. Subject (+) = Registration – Course) की दायीं और टेबल के सारे रिकॉर्ड प्रदर्शित किये जाते हैं। इसी प्रकार ज्वाइन कंडीशन की बायीं और के टेबल के मेचिंग रिकॉर्ड प्रदर्शित किये जाते हैं। ज्वाइन कंडीशन की दायीं और के टेबल के उन रिकॉर्ड के लिए जिनका बायीं और मेचिंग नहीं हैं, नल प्रदर्शित किया जाता हैं।
क्वेरी :- Select * from Course, Registration Where Course.Subject (+) = Registration.Subject
रिजल्ट :-
Sub ID | Subject | Faculty | Stud ID | Name | Subject |
1 | VB | Savarna | 1003 | Paridhi | VB |
2 | Java | Ritu | 1001 | Dhinendra | JAVA |
3 | C++ | Sudhir | 1002 | Piyush | C++ |
NULL | NULL | NULL | 1005 | Pooja | HTML |
NULL | NULL | NULL | 1004 | Monika | MIS |
रिजल्ट टेबल से डुप्लीकेट कॉलम हटाने के लिए हम फील्ड नेम्स को विशेषतौर से स्पेसिफॉय कर सकते हैं (जैसा हमने नैचरल ज्वाइन में किया था) और इसे नैचरल राईट आऊटर ज्वाइन कह सकते हैं।