जब आप डेटाबेस के साथ काम कर रहे होते हैं, तो आप एक ही समय में दो या अधिक टेबल क्वेरी करना चाह सकते हैं और परिणामों का एक संयुक्त सेट बना सकते हैं। उदाहरण के लिए, आप हर कर्मचारी का नाम और वह विभाग ढूंढना चाह सकते हैं जिसके लिए वे काम करते हैं, जहां वे दो जानकारी दो अलग-अलग टेबल में संग्रहीत हैं।
यहीं SQL जॉइन काम आते हैं। जब आप टेबल जॉइन करते हैं, तो आप कई टेबल पर एक क्वेरी चला सकते हैं और एक संयुक्त परिणाम बना सकते हैं।
इस गाइड में, हम एक प्रकार के जॉइन पर ध्यान केंद्रित करने जा रहे हैं: OUTER JOIN। OUTER JOIN ऑपरेटर पंक्तियों को तब भी लौटाते हैं जब उनके पास अंतिम टेबल में संबंधित पंक्तियाँ नहीं होती हैं। हम OUTER JOIN के तीन प्रकारों, वे कैसे काम करते हैं, और आप उन्हें अपनी SQL क्वेरी में कैसे उपयोग कर सकते हैं, इस पर चर्चा करेंगे।
SQL जॉइन रिफ्रेशर
क्वेरी, जो आमतौर पर SELECT स्टेटमेंट से शुरू होती हैं, डेटाबेस से जानकारी पुनर्प्राप्त करने के लिए उपयोग की जाती हैं। आमतौर पर, जब आप क्वेरी लिख रहे होते हैं तो आप एक टेबल से जानकारी पुनर्प्राप्त करने पर ध्यान केंद्रित करेंगे और यह निर्दिष्ट करने के लिए FROM क्लॉज का उपयोग करेंगे कि आपका कमांड किस टेबल को क्वेरी करेगा। यहां एक मानक SQL क्वेरी लिखने के लिए सिंटैक्स है:
SELECT column_name FROM table_name WHERE certain_conditions_are_met;
यहां employees टेबल में हर कर्मचारी के नामों की सूची पुनर्प्राप्त करने वाली क्वेरी का एक उदाहरण है:
SELECT name FROM employees;
हमारी क्वेरी निम्नलिखित लौटाती है:
| name |
| Luke Mike Hannah Geoff Alexis Emma Jonah Adam |
(8 पंक्तियाँ)
हम WHERE क्लॉज का उपयोग अपनी क्वेरी के परिणामों को केवल उन रिकॉर्ड्स तक फ़िल्टर करने के लिए भी कर सकते हैं जो मानदंडों के एक निश्चित सेट को पूरा करते हैं। उदाहरण के लिए, हम एक क्वेरी लिख सकते हैं जो सभी सेल्स एसोसिएट्स या सभी कार्यकारी कर्मचारियों के नाम ढूंढती है।
लेकिन क्या होगा अगर हम कई टेबल से जानकारी प्राप्त करना चाहते हैं, और परिणाम को एक टेबल में संयोजित करना चाहते हैं? यहीं जॉइन काम आते हैं।
जॉइन आपको कई टेबल क्वेरी करने और मिलान की गई पंक्तियों के साथ एक संयुक्त परिणाम सेट बनाने की अनुमति देते हैं। जॉइन के तीन मुख्य प्रकार हैं: INNER JOIN, OUTER JOIN, और CROSS JOIN।
INNER JOIN उन पंक्तियों को लौटाते हैं जिनका आपके द्वारा क्वेरी की जा रही दोनों टेबल में मिलान होता है, जबकि OUTER JOIN उन पंक्तियों को लौटाते हैं जिनके पास जॉइन की गई टेबल में संबंधित पंक्तियाँ नहीं होती हैं। CROSS JOIN बिना जॉइन शर्त के जॉइन होते हैं, और एक टेबल की प्रत्येक पंक्ति को दूसरी टेबल की संबंधित पंक्ति के साथ संयोजित किया जाता है।
SQL आउटर जॉइन
जैसा कि हमने चर्चा की, जब आप INNER JOIN कर रहे होते हैं, तो किसी अन्य टेबल में बेमेल किसी भी टेबल की पंक्तियाँ परिणाम सेट में नहीं लौटाई जाएंगी। लेकिन क्या होगा अगर हम इन मानों को प्राप्त करना चाहते हैं? हम इस डेटा को पुनर्प्राप्त करने के लिए OUTER JOIN का उपयोग कर सकते हैं।
OUTER JOIN के तीन प्रकार हैं:
LEFT OUTER JOINSबाएं टेबल से बेमेल पंक्तियाँ लौटाते हैं;RIGHT OUTER JOINSदाएं टेबल से बेमेल पंक्तियाँ लौटाते हैं;FULL OUTER JOINSसभी टेबल से बेमेल पंक्तियाँ लौटाते हैं।
OUTER JOIN हमारी आवश्यकताओं के आधार पर दोनों टेबल से रिकॉर्ड मिलान करने में सक्षम हैं और हमारे द्वारा उपयोग किए जाने वाले जॉइन के प्रकार के लिए प्रासंगिक सभी रिकॉर्ड लौटाएंगे।
SQL जॉइन: लेफ्ट
लेफ्ट जॉइन बाएं टेबल से सभी पंक्तियाँ और दाएं टेबल से उन पंक्तियों को लौटाते हैं जहां जॉइन शर्त पूरी होती है।
मान लीजिए कि हमारे पास दो टेबल हैं: employees और company_departments। अब मान लीजिए कि हम हर कर्मचारी का नाम और साथ ही उनके विभाग के नाम प्राप्त करना चाहते हैं, भले ही उन्हें किसी विभाग में असाइन न किया गया हो। हम LEFT JOIN का उपयोग करके यह जानकारी प्राप्त कर सकते हैं।
नीचे LEFT JOIN क्वेरी का एक उदाहरण है जो employees और company_departments टेबल को उनके सामान्य मूल्य: department_id का उपयोग करके संयोजित करके हर कर्मचारी का नाम और उनका विभाग नाम पुनर्प्राप्त करेगा।
SELECT employees.name, company_departments.name FROM employees LEFT JOIN company_departments ON employees.department_id = company_departments.department_id;
हमारी क्वेरी निम्नलिखित लौटाती है:
| name | name |
| Luke | Sales |
| Mike | Sales |
| Hannah | Sales |
| Geoff | Sales |
| Alexis | Sales |
| Emma | Marketing |
| Jonah | Executive |
| Adam |
(8 पंक्तियाँ)
जैसा कि आप देख सकते हैं, LEFT JOIN ने employees टेबल से सभी पंक्तियाँ लौटाई हैं, भले ही वह विभाग जिसके लिए वे काम करते हैं, company_departments टेबल में नहीं मिला हो।
यदि आप लेफ्ट जॉइन के बारे में अधिक जानना चाहते हैं, तो आप यहां Career Karma ट्यूटोरियल पर SQL ऑपरेशन पढ़ सकते हैं।
SQL जॉइन: राइट
RIGHT JOIN स्टेटमेंट LEFT JOIN ऑपरेटर का सीधा विपरीत है। RIGHT JOIN दाएं टेबल से सभी पंक्तियों के साथ-साथ बाएं टेबल से उन पंक्तियों को लौटाता है जहां जॉइन शर्त पूरी होती है।
मान लीजिए कि हम सभी विभागों के नाम और साथ ही उन विभागों में काम करने वाले हर कर्मचारी के नाम प्राप्त करना चाहते हैं। और हम उन विभागों के लिए भी डेटा प्राप्त करना चाहते हैं जहां कोई कर्मचारी असाइन नहीं किया गया है। हम यह डेटा प्राप्त करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं:
SELECT employees.name, company_departments.name AS "DeptName" FROM employees RIGHT JOIN company_departments ON employees.department_id = company_departments.department_id;
उपरोक्त क्वेरी निम्नलिखित लौटाती है:
| name | "deptname" |
| Luke | Sales |
| Mike | Sales |
| Hannah | Sales |
| Geoff | Sales |
| Alexis | Sales |
| Emma | Marketing |
| Jonah | Executive |
| Payroll | |
| Information Technology |
(9 पंक्तियाँ)
जैसा कि आप देख सकते हैं, हमारी क्वेरी ने सभी विभागों की सूची के साथ-साथ उन विभागों के लिए काम करने वाले हर कर्मचारी के नाम लौटाए हैं। क्वेरी ने Payroll और Information Technology विभाग भी लौटाए हैं, जिनके वर्तमान में कोई कर्मचारी नहीं हैं।
इसके अलावा, हमारी क्वेरी ने Adam को नहीं लौटाया, जो हमारे LEFT JOIN क्वेरी में वह कर्मचारी था जिसे किसी विभाग में असाइन नहीं किया गया था। ऐसा इसलिए है क्योंकि RIGHT JOIN में दाएं टेबल - company_departments - से सभी पंक्तियाँ शामिल होती हैं जहां हमारी शर्तें पूरी होती हैं, और Adam का दाएं टेबल में किसी भी रिकॉर्ड से कोई संबंध नहीं है।
फुल SQL आउटर जॉइन
Full OUTER JOIN एक असामान्य प्रकार का SQL join है जिसका उपयोग दोनों टेबल से बेमेल रिकॉर्ड लौटाने के लिए किया जा सकता है। अक्सर, full OUTER JOIN का उपयोग दो टेबल के बीच कितना ओवरलैप मौजूद है यह समझने के लिए एग्रीगेट फंक्शन के साथ किया जाता है।
मान लीजिए कि हम सभी कर्मचारियों और विभागों की सूची प्राप्त करना चाहते हैं। हम उस जानकारी को पुनर्प्राप्त करने के लिए निम्न SQL क्वेरी का उपयोग कर सकते हैं:
SELECT employees.name, company_departments.name AS "DeptName" FROM employees FULL OUTER JOIN company_departments ON employees.department_id = company_departments.department_id;
हमारी क्वेरी निम्नलिखित लौटाती है:
| name | "deptname" |
| Luke | Sales |
| Mike | Sales |
| Hannah | Sales |
| Geoff | Sales |
| Alexis | Sales |
| Emma | Marketing |
| Jonah | Executive |
| Adam | |
| Payroll | |
| Information Technology |
(10 पंक्तियाँ)
उपरोक्त परिणाम सेट में हर कर्मचारी का नाम शामिल है, साथ ही वह विभाग जिससे वे असाइन हैं, भले ही उन्हें किसी विभाग में असाइन न किया गया हो। परिणाम सेट में सभी विभाग के नाम भी शामिल हैं, भले ही किसी विभाग में कोई कर्मचारी असाइन न हो।
निष्कर्ष
Joins एक SQL सर्वर फंक्शन है जो आपको एक ही समय में दो या अधिक टेबल क्वेरी करने और एक संयुक्त परिणाम सेट बनाने की अनुमति देता है। उदाहरण के लिए, यदि आप कंपनी के कर्मचारियों की सूची के साथ-साथ उनकी सबसे हाल की पेरोल चेक की तारीख प्राप्त करना चाहते हैं, तो आप join का उपयोग कर सकते हैं।
इस ट्यूटोरियल में, हमने OUTER JOIN पर ध्यान केंद्रित किया, जो join में पंक्तियों को तब भी लौटाते हैं जब उनके पास जॉइन की गई टेबल में संबंधित पंक्तियाँ नहीं होती हैं। हमने OUTER JOIN के तीन मुख्य प्रकारों - LEFT JOIN, RIGHT JOIN, और full OUTER JOIN - पर भी चर्चा की और यह पता लगाया कि वे व्यवहार में कैसे काम करते हैं।
अब आप विशेषज्ञ की तरह SQL JOIN ऑपरेशन करने के लिए तैयार हैं!