Database
 sql >> डेटाबेस >  >> RDS >> Database

एक स्टेटमेंट में मल्टीपल (3+) टेबल्स को कैसे जॉइन करें?

समस्या:

आप केवल एक 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; 

यह क्वेरी पाठ्यक्रम विषय के नाम और छात्रों और शिक्षकों के अंतिम नामों के साथ रिकॉर्ड लौटाती है:

<थ>t_last_name
subject_name s_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 क्लॉज में उपयुक्त शर्त के साथ ऑपरेटर। सिद्धांत रूप में, आप जितनी चाहें उतनी तालिकाओं में शामिल हो सकते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कुछ कुल परिवर्तन टूट गए हैं

  2. एक समान क्वेरी के लिए एकाधिक योजनाएं

  3. टेबल एक्सप्रेशन के मूल तत्व, भाग 7 - सीटीई, अनुकूलन विचार

  4. लेनदेन लॉग विन्यास मुद्दे

  5. SQL में ज़ीरो द्वारा डिवाइड को कैसे हैंडल करें