समस्या:
आप केवल एक SELECT कथन का उपयोग करके दो से अधिक तालिकाओं के डेटा को संयोजित करना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में चार टेबल हैं:student
, teacher
, subject
, और learning
.
student
तालिका में निम्नलिखित कॉलम में डेटा है:id
, first_name
, और last_name
।
id | <थ>पहला_नामlast_name | |
---|---|---|
1 | टॉम | मिलर |
2 | जॉन | वसंत |
3 | लिसा | विलियम्स |
4 | एली | बार्कर |
5 | जेम्स | मूर |
teacher
तालिका में निम्नलिखित कॉलम में डेटा है:id
, first_name
, last_name
, और subject
।
id | <थ>पहला_नामlast_name | |
---|---|---|
1 | मिलान | स्मिथ |
2 | चार्ल्स | डेविस |
3 | चिह्नित करें | मूर |
subject
तालिका में निम्नलिखित कॉलम में डेटा है:id
और name
।
id | <थ>नाम|
---|---|
1 | अंग्रेज़ी |
2 | कला |
3 | संगीत |
अंत में, learning
तालिका में निम्नलिखित कॉलम में डेटा है:id
, mark
, subject_id
, student_id
, और teacher_id
।
id | चिह्नित करें | विषय_आईडी | student_id | शिक्षक_आईडी |
---|---|---|---|---|
1 | 4 | 1 | 2 | 1 |
2 | 5 | 2 | 3 | 2 |
3 | 4 | 3 | 1 | 3 |
4 | 3 | 2 | 1 | 2 |
5 | 2 | 3 | 5 | 3 |
6 | 3 | 3 | 4 | 2 |
हम जानना चाहते हैं कि कौन से छात्र अंग्रेजी, संगीत और कला का अध्ययन कर रहे हैं, साथ ही कौन से शिक्षक इन कक्षाओं को निर्देश दे रहे हैं। पाठ्यक्रम का विषय चुनें, उस पाठ्यक्रम को लेने वाले छात्र का अंतिम नाम और उस पाठ्यक्रम को देने वाले शिक्षक का अंतिम नाम चुनें।
समाधान:
एकाधिक JOIN
का उपयोग करें आपकी क्वेरी में:
SELECT l.name AS subject_name, t.last_name AS student_last_name, st.last_name AS teacher_last_name FROM learning AS l JOIN subject s ON l.subject_id=s.id JOIN student st ON l.student_id=st.id JOIN teacher t ON l.teacher_id=t.id;
यह क्वेरी पाठ्यक्रम विषय के नाम और छात्रों और शिक्षकों के अंतिम नामों के साथ रिकॉर्ड लौटाती है:
subject_name | s_last_name | <थ>t_last_name|
---|---|---|
संगीत | मूर | मिलर |
कला | डेविस | मिलर |
अंग्रेज़ी | स्मिथ | वसंत |
कला | डेविस | विलियम्स |
संगीत | डेविस | बार्कर |
संगीत | मूर | मूर |
यह डेटा तीन तालिकाओं से आता है, इसलिए हमें जो जानकारी चाहिए उसे प्राप्त करने के लिए हमें उन सभी तालिकाओं में शामिल होना होगा।
चर्चा:
यदि आप एकाधिक (दो से अधिक) तालिकाओं में संग्रहीत डेटा को संयोजित करना चाहते हैं, तो आपको JOIN
का उपयोग करना चाहिए कई बार ऑपरेटर। सबसे पहले, आप सामान्य रूप से दो तालिकाओं को जोड़ते हैं (JOIN
. का उपयोग करके) , LEFT JOIN
, RIGHT JOIN
, या FULL JOIN
, के रूप में उपयुक्त)। JOIN
ऑपरेशन एक "वर्चुअल टेबल" बनाता है जो दो तालिकाओं से संयुक्त डेटा संग्रहीत करता है। हमारे उदाहरण में, परिणाम तालिका learning
और subject
टेबल.
अगला चरण इस परिणाम तालिका को तीसरी तालिका में शामिल करना है (हमारे उदाहरण में, student
) यह एक नियमित JOIN
की तरह है :आप उपयुक्त स्थिति के साथ "वर्चुअल टेबल" और तीसरी तालिका में शामिल हों। इस स्थिति में आम तौर पर अतिरिक्त तालिका से एक या अधिक कॉलम शामिल होने चाहिए (student
) और "वर्चुअल टेबल" से एक या अधिक कॉलम। हमारे उदाहरण में, हम student
दूसरी जॉइन स्थिति में तालिका।
इस बिंदु पर, हमारे पास तीन तालिकाओं के डेटा के साथ एक नई वर्चुअल तालिका है। अंतिम चरण चौथी तालिका से डेटा जोड़ना है (हमारे उदाहरण में, teacher
) और इन तालिकाओं से कुंजी का उपयोग करके जुड़ें (हमारे उदाहरण में, id
teacher
तालिका और teacher_id
learning
टेबल)।
यदि आपको किसी अन्य तालिका में शामिल होना है, तो आप किसी अन्य JOIN
का उपयोग कर सकते हैं ON क्लॉज में उपयुक्त शर्त के साथ ऑपरेटर। सिद्धांत रूप में, आप जितनी चाहें उतनी तालिकाओं में शामिल हो सकते हैं।