समस्या:
आप एक टेबल में एक प्राथमिक कंपाउंड कुंजी और दूसरे में एक विदेशी कंपाउंड कुंजी का उपयोग करके कई कॉलम पर टेबल में शामिल होना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में student
, enrollment
, और payment
. student
तालिका में निम्नलिखित कॉलम में डेटा है:id
(प्राथमिक कुंजी), first_name
, और last_name
।
आईडी | <थ>प्रथम_नामlast_name | |
---|---|---|
1 | एली | विल्सन |
2 | टॉम | भूरा |
3 | सैंड्रा | मिलर |
enrollment
तालिका में निम्नलिखित कॉलम में डेटा है:प्राथमिक कुंजी (student_id
और course_code
), is_active
, और start_date
.
student_id | <थ>कोर्स_कोड <थ> is_active <थ>प्रारंभ_दिनांक|||
---|---|---|---|
1 | GD03 | सच | 2020-01-20 |
1 | AP01 | झूठा | 2020-03-10 |
2 | SL01 | सच | 2020-05-05 |
3 | SL01 | सच | 2020-06-01 |
payment
तालिका में निम्नलिखित कॉलम में डेटा है:विदेशी कुंजी (student_id
और course_code
, enrollment
तालिका), status
, और amount
।
student_id | <थ>कोर्स_कोडस्थिति | <थ>राशि||
---|---|---|---|
1 | GD03 | भुगतान किया | 230 |
1 | AP01 | लंबित | 100 |
2 | SL01 | लंबित | 80 |
3 | SL01 | लंबित | 110 |
आइए प्रत्येक छात्र का नाम, पाठ्यक्रम कोड और भुगतान की स्थिति और राशि दिखाएं।
समाधान:
SELECT s.last_name, s.first_name, p.course_code, p.status, p.amount FROM enrollment e JOIN student s ON s.id=e.student_id JOIN payment p ON p.course_code=e.course_code AND p.student_id=e.student_id;
last_name | <थ>प्रथम_नाम <थ>कोर्स_कोडस्थिति | <थ>राशि|||
---|---|---|---|---|
विल्सन | एली | GD03 | भुगतान किया | 230 |
विल्सन | एली | AP01 | लंबित | 100 |
भूरा | टॉम | SL01 | लंबित | 80 |
मिलर | सैंड्रा | SL01 | लंबित | 110 |
चर्चा:
अगर आप टेबल में डेटा स्टोर करना चाहते हैं, तो ऐसी कंपाउंड कुंजी जो एक टेबल में प्राथमिक कुंजी है और दूसरी टेबल में विदेशी कुंजी है, से जुड़ना चाहते हैं, तो बस कई कॉलम में शामिल होने की स्थिति का उपयोग करें।
एक सम्मिलित तालिका में (हमारे उदाहरण में, enrollment
), हमारे पास दो कॉलम (student_id
.) से बनी प्राथमिक कुंजी है और course_code
) दूसरी तालिका में (payment
), हमारे पास ऐसे कॉलम हैं जो एक विदेशी यौगिक कुंजी हैं (student_id
और course_code
) हम इन मिश्रित कुंजियों के साथ तालिकाओं में कैसे शामिल हो सकते हैं?
आसान! हमें बस एक JOIN
का उपयोग करने की आवश्यकता है पहली शर्त के बाद AND ऑपरेटर का उपयोग करके एक से अधिक शर्त वाले खंड। हमारे उदाहरण में, हम इस शर्त का उपयोग करते हैं:
p.course_code=e.course_code AND p.student_id=e.student_id
पहले भाग में, हम student_id
. का उपयोग करते हैं enrollment
टेबल और student_id
payment
टेबल। अगली स्थिति में, हमें course_code
मिलता है enrollment
तालिका और course_code
payment
टेबल।
ध्यान दें कि student_id
और course_code
कॉलम enrollment
टेबल। इसलिए, उनका उपयोग payment
तालिका एक विदेशी कुंजी के रूप में।