SQL Server (Transact-SQL) में JOIN का उपयोग कई तालिकाओं से डेटा पुनर्प्राप्त करने के लिए किया जाता है, जब SQL कमांड में दो या दो से अधिक टेबल एक साथ जुड़े होते हैं। यहाँ SQL सर्वर में 4 प्रकार के JOIN हैं
- आंतरिक शामिल हों - साधारण कनेक्शन फॉर्म के रूप में भी जाना जाता है
- बाएं बाहरी शामिल हों - या बाएं शामिल हों
- दाहिने बाहरी शामिल हों - या राइट जॉइन करें
- पूर्ण बाहरी जुड़ाव - या पूर्ण रूप से शामिल हों
अब आइए SQL सर्वर में JOIN को बेहतर ढंग से समझने के लिए सिंटैक्स, इलस्ट्रेशन और उदाहरणों को देखें।
इनर जॉइन
सबसे अधिक संभावना है कि आप पहले से ही कुछ कमांड में INNER JOIN का उपयोग कर चुके हैं। यह कनेक्शन का सबसे आम प्रकार है, जब कनेक्शन की शर्तें पूरी होती हैं तो सभी पंक्तियों को टेबल से वापस कर दिया जाता है।
INNER JOIN सिंटैक्स
SELECT cot
FROM bang1
INNER JOIN bang2
ON bang1.
cot = bang2.cot;
इनर जॉइन की सचित्र छवि
लौटा हुआ परिणाम State1 और bang2 के बीच का सामान्य रिकॉर्ड है।
उदाहरण INNER JOIN
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_id = d
onhang.nhacung_id;
उपरोक्त उदाहरण में दिया गया परिणाम 'आपूर्तिकर्ता' तालिका और 'आदेश' तालिका में जानकारी की पंक्ति है जब nhacung_id का मान 2 तालिकाओं के बराबर होता है।पी>
आइए बेहतर ढंग से समझने के लिए विशिष्ट डेटा के साथ एक उदाहरण देखें।
nhacung तालिका में 2 सूचना क्षेत्र हैं:nhacung_id और nhacung_ten।
nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIAडोनहैंग टेबल में 3 फ़ील्ड हैं donhang_id, nhacung_id और donhang_ngay।
donhang_id nhacung_id डोनहंग_नगे 500125 10000 2003/05/12 500126 10001 2003/05/13 500127 10004 2003/05/14यदि आप नीचे सेलेक्ट कमांड (INNER JOIN का उपयोग करके) चला रहे हैं:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_
id = donhang.nhacung_id;
यह लौटाया गया परिणाम सेट है:
nhacung_id दस आईबीएम donhang_ngay 10000 2003/05/12 10001 Hewlett Packard 2003/05/13Microsoft और NVIDIA उत्पादों को तालिका से हटा दिया गया है क्योंकि nhacung_id (10002 और 10003) केवल 1 तालिका में उपलब्ध है। पंक्ति 500127 (donhang_id) को डोनहांग तालिका से हटा दिया गया है क्योंकि nhacung_id 10004 nhacung तालिका में नहीं है।
INNER JOIN का पुराना सिंटैक्स
INNER JOIN को नीचे दिए गए पुराने सिंटैक्स के साथ फिर से लिखा जा सकता है (लेकिन INNER JOIN कीवर्ड वाले सिंटैक्स का उपयोग करने की अनुशंसा की जाती है)
SELECT musicung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM donhang, nhacung
WHERE nhacung.n
hacung_id = donhang.nhacung_id;
बाएं बाहरी शामिल हों
कुछ डेटाबेस LEFT OUTER JOIN के बजाय LEFT JOIN का उपयोग करते हैं। इस प्रकार का कनेक्शन बाएं पैनल में पंक्तियों को चालू स्थिति में लौटाता है और केवल शेष तालिकाएँ लेता है जो निर्धारित शर्तों को पूरा करती हैं।
वाम-विन्यास में शामिल हों
SELECT cot
FROM bang1
LEFT [OUTER] JOIN bang2
ON bang1.co
t = bang2.cot;
नीले क्षेत्र के परिणामस्वरूप बाएं जॉइन का चित्रण करें
लौटे हुए परिणाम में State1 और बैंग2 में स्थित रिकॉर्ड्स State1 (तस्वीर में नीला क्षेत्र) को सौंपे जाते हैं।
उदाहरण लेफ्ट जॉइन
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhac
ung_id = donhang.nhacung_id;
उपरोक्त उदाहरण तालिका से सभी पंक्तियों और केवल उन पंक्तियों को लौटाएगा जो डोनहांग तालिका में आवश्यकताओं को पूरा करती हैं। यदि तालिका में nhacung_id मान डोनहांग तालिका में मौजूद नहीं है, तो डोनहांग के सभी फ़ील्ड परिणाम तालिका में परिणाम प्रदर्शित करेंगे।
नीचे एक विशिष्ट उदाहरण दिया गया है। तालिका में nhacung_id और nhacung_ten शामिल हैं।
nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIADonhang तालिका में donhang_id, nhacung_id और donhang_ngay शामिल हैं।
donhang_id nhacung_id डोनहंग_नगे 500125 10000 2003/05/12 500126 10001 2003/05/13अगर नीचे सेलेक्ट कमांड चला रहे हैं:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhacun
g_id = donhang.nhacung_id;
परिणाम इस प्रकार होगा:
nhacung_id nhacung_ten 10000 आईबीएम donhang_ngay 2003/05/12 10001 Hewlett Packard 2003/05/13 10002 Microsoft 10003 NVIDIAMicrosoft और NVIDIA पंक्तियाँ अभी भी परिणाम सेट में हैं क्योंकि वे LEFT OUTER JOIN का उपयोग कर रहे हैं (बाईं ओर सभी तालिकाएँ प्राप्त करें) . इस बीच, इन अभिलेखों में से donhang_ngay मान्य होगा।
दाहिने बाहरी जॉइन करें
कुछ डेटाबेस RIGHT OUTER JOIN के बजाय RIGHT JOIN का उपयोग करते हैं। इस प्रकार का कनेक्शन चालू स्थिति में दाएँ तालिका में पंक्तियों को लौटाता है और केवल शेष तालिकाएँ लेता है जो निर्धारित शर्तों को पूरा करती हैं।
सिंटैक्स राइट जॉइन
SELECT cot
FROM bang1
RIGHT [OUTER] JOIN bang2
ON bang1.cot =
bang2.cot;
चित्रण राइट जॉइन
लौटे परिणाम में बैंग2 शामिल है और रिकॉर्ड्स स्टेट1 में हैं जो बैंग2 (तस्वीर में नीला क्षेत्र) को सौंपा गया है।
उदाहरण राइट जॉइन
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nha
cung_id = donhang.nhacung_id;
लौटा हुआ परिणाम डोनहैंग तालिका की सभी पंक्तियाँ हैं और केवल वे पंक्तियाँ हैं जो nhacung तालिका में आवश्यकताओं को पूरा करती हैं।
यदि डोनहांग तालिका में nhacung_id का मान तालिका में मौजूद नहीं है, तो सूची के सभी फ़ील्ड परिणाम तालिका में दिखाई देंगे।
नीचे एक विशिष्ट उदाहरण दिया गया है। तालिका में nhacung_id और nhacung_ten शामिल हैं।
nhacung_id nhacung_ten 10000 Apple 10001 Googleडोनहांग तालिका में donhang_id, nhacung_id और donhang_ngay शामिल हैं।
donhang_id nhcung_id डोनहंग_नगे 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10002 2003/08/14अगर नीचे सेलेक्ट कमांड चला रहे हैं:
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nhacung_id
= donhang.nhacung_id;
परिणाम इस प्रकार होगा:
donhang_id डोनहंग_नगे nhacung_id 500125 2003/08/12 Apple 500126 2003/08/13 Google 500127 2003/08/14पंक्ति 500127 (donhang_id) अभी भी परिणाम तालिका में है क्योंकि राइट आउटर जॉइन है उपयोग में। ध्यान दें कि उस रिकॉर्ड के लिए nhacung_ten में मान होता है।
पूरा बाहरी जुड़ाव
कुछ डेटाबेस फुल OUTER JOIN के बजाय FULL JOIN का उपयोग करते हैं। यह कनेक्शन प्रकार बाएँ और दाएँ तालिकाओं में सभी पंक्तियों और शर्तों को पूरा नहीं करने वाली स्थितियों में सेट किए गए NULL मान लौटाता है।
सिंटैक्स फुल जॉइन
SELECT cot
FROM bang1
FULL [OUTER] JOIN bang2
ON bang1.c
ot = bang2.cot;
हरित क्षेत्र के परिणाम के साथ पूर्ण जुड़ाव का चित्रण करें
लौटे परिणाम में बैंग1 और बैंग2 के सभी रिकॉर्ड शामिल हैं।
उदाहरण पूर्ण जॉइन
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i
d = donhang.nhacung_id;
उपरोक्त उदाहरण तालिका और डोनहैंग से सभी पंक्तियों को वापस कर देगा, लेकिन जब शर्त पूरी नहीं होती है, तो मान परिणाम तालिका पर सेट हो जाएगा।
यदि संगीत पैनल में nhacung_id डोनहांग तालिका में नहीं है, या डोनहांग तालिका में nhacung_id मान संगीत पैनल में नहीं है, तो सूचना फ़ील्ड प्रदर्शित की जाएंगी।पी>
नीचे FULL OUTER JOIN का एक विशिष्ट उदाहरण दिया गया है। तालिका में nhacung_id और nhacung_ten शामिल हैं।
nhacung_id nhacung_ten 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIADonhang तालिका में donhang_id, nhacung_id और donhang_ngay शामिल हैं।
donhang_id nhacung_id डोनहंग_नगे 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10004 2003/08/14अगर नीचे सेलेक्ट कमांड चला रहे हैं:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i
d = donhang.nhacung_id;
परिणाम इस प्रकार होगा:
nhacung_id nhacung_ten 10,000 donhang_ngay IBM 2003/08/12 10001 Hewlett Packard 2003/08/13 10002 Microsoft 10003 NVIDIA 2003/08/14Microsoft और NVIDIA उत्पाद अभी भी परिणाम सेट में हैं क्योंकि वे उपयोग कर रहे हैं पूर्ण बाहरी शामिल हों। फिर इन अभिलेखों के donhang_ngay में मान होते हैं। nhacung_id के लिए पंक्ति 10004 है जो परिणाम तालिका में भी है लेकिन इन अभिलेखों के nhacung_id और nhacung_ten में मान होते हैं।