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

एकाधिक कॉलम में कैसे जुड़ें

समस्या:

आप एक टेबल में एक प्राथमिक कंपाउंड कुंजी और दूसरे में एक विदेशी कंपाउंड कुंजी का उपयोग करके कई कॉलम पर टेबल में शामिल होना चाहते हैं।

उदाहरण:

हमारे डेटाबेस में student , enrollment , और payment . student तालिका में निम्नलिखित कॉलम में डेटा है:id (प्राथमिक कुंजी), first_name , और last_name

<थ>प्रथम_नाम
आईडी last_name
1 एली विल्सन
2 टॉम भूरा
3 सैंड्रा मिलर

enrollment तालिका में निम्नलिखित कॉलम में डेटा है:प्राथमिक कुंजी (student_id और course_code ), is_active , और start_date .

<थ>कोर्स_कोड <थ> is_active <थ>प्रारंभ_दिनांक
student_id
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 तालिका एक विदेशी कुंजी के रूप में।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ट्रिगर के स्थान पर केस बनाना - भाग 1

  2. RANK, DENSE_RANK और ROW_NUMBER फ़ंक्शंस के बीच समानताएं और अंतर

  3. प्रदर्शन मिथक:तालिका चर हमेशा स्मृति में होते हैं

  4. एसक्यूएल शुरुआती के लिए () ऑपरेटर के बराबर नहीं है

  5. क्या आपका Salesforce ड्राइवर बल्क कार्रवाइयों का समर्थन करता है?