Join Queries: Inner, Outer (Left/Right/Full), Cross

Joins वह relational गोंद हैं जो एक query के दौरान मेल खाते columns इस्तेमाल करके अलग tables को वापस साथ सिलती हैं।

12 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

बिखरे Data की पहेली

आपके college principal सारे library members की एक सूची उन बिल्कुल dates के साथ माँगते हैं जब उन्होंने किताबें issue कीं। आप CampusLib database की ओर दौड़ते हैं और tables जाँचते हैं। members table में names हैं पर issue dates नहीं। issues table में dates हैं पर names नहीं, केवल member_id numbers। जो data आपको चाहिए वह अलग structural द्वीपों पर फँसा है। इसे अपनी university exam और असली दुनिया की database design के लिए हल करने के लिए, आपको Joins इस्तेमाल करके tables को साथ जोड़ने की कला में महारत हासिल करनी होगी।

Theory

बँटा हुआ Token Ledger

एक college festival पर एक token counter की कल्पना कीजिए। एक receipt book आपका नाम Token Number 105 के साथ store करती है। एक अलग kitchen ledger दर्ज करती है कि Token Number 105 ने समोसों की एक plate ली। यह समझने के लिए कि किसने क्या खाया, organizer दोनों sheets भर token numbers match करता है। SQL Joins बिल्कुल यही करते हैं: वे एक साझा column, जैसे member_id, इस्तेमाल करके दो tables को अस्थायी रूप से एक अकेली सार्थक spreadsheet में वापस सिल देते हैं।

Theory

Tables को औपचारिक रूप से जोड़ना

relational databases में, एक Join Query एक operation है जो दो या ज़्यादा tables की rows को उनके बीच एक संबंधित column के आधार पर मिलाता है। जबकि normalization अतिरेक से बचने के लिए data बाँटता है, joins इसे execution के दौरान वापस जोड़ते हैं। Oracle SQL में, हम FROM clause के भीतर explicit relational keywords इस्तेमाल करते हैं ताकि नियंत्रित करें कि unmatched rows कैसे संभाली जाएँ। master family में Inner Joins, Outer Joins, और Cross Joins शामिल हैं।

At a glance

relational database systems में मूल join operations

Join Typeयह क्या Return करता हैUnmatched Rows का संभालना
INNER JOINकेवल वे rows जिनमें दोनों tables में मेल खाते values होंoutput view से पूरी तरह हटा दी जाती हैं
LEFT OUTER JOINleft table की सारी rows, साथ ही right से matchesunmatched right columns NULL से भरे जाते हैं
RIGHT OUTER JOINright table की सारी rows, साथ ही left से matchesunmatched left columns NULL से भरे जाते हैं
FULL OUTER JOINदोनों tables के सारे records साथ मिलाए गएगुमशुदा होने पर किसी भी ओर NULL से खाली भरता है

Practical

Oracle SQL में Members और Issues को सिलना

-- Query 1: Inner Join shows only members who currently have active issues
SELECT m.name, i.issue_date 
FROM members m 
INNER JOIN issues i ON m.member_id = i.member_id;

-- Query 2: Left Join preserves all members, even those who never borrowed a book
SELECT m.name, NVL(i.issue_date, 'No Books Issued') AS status 
FROM members m 
LEFT OUTER JOIN issues i ON m.member_id = i.member_id;

Copy करके Oracle FreeSQL खोलें
Oracle FreeSQL, Oracle SQL का मुफ़्त online editor है। Code पहले copy हो जाता है: उसे वहां paste करके Run करें।

Quiz

अगर आपकी CampusLib members table में 5 student records हैं और उनमें से केवल 3 ने असल में किताबें उधार लीं, members से issues तक एक LEFT OUTER JOIN student सूची के लिए कितनी rows return करेगा?

  1. बिल्कुल 3 rows क्योंकि केवल 3 matches मौजूद हैं।
  2. बिल्कुल 5 rows क्योंकि left table की structure सारे मूल members सुरक्षित रखती है।
  3. matrix multiplication यांत्रिकी के कारण बिल्कुल 15 rows।
  4. 0 rows क्योंकि NULL values statement execution को अमान्य कर देते हैं।
Show the answer

बिल्कुल 5 rows क्योंकि left table की structure सारे मूल members सुरक्षित रखती है।

एक LEFT OUTER JOIN guarantee देता है कि left table (members) की हर एक row अंतिम result में रहे। उन 2 students के लिए जिन्होंने कभी किताबें उधार नहीं लीं, Oracle उनकी issue details को त्यागने के बजाय NULL values से भर देता है। एक INNER JOIN केवल 3 rows return करता।

Watch out

Cross Join की तबाही

एक university SQL exam में marks खोने का सबसे तेज़ तरीक़ा ON keyword या conditional clause छोड़ना है। एक मेल खाते filter के बिना SELECT * FROM members, issues; लिखना एक Cross Join, या Cartesian Product trigger करता है। अगर CampusLib में 1,000 members और 5,000 issue logs हैं, Oracle हर member को हर एक log से गुणा करता है, 5,000,000 भ्रामक rows पैदा करते हुए। यह server performance को पूरी तरह crash कर देता है।

Think first

Dialect Verification Challenge

Mental Challenge: क्या एक FULL OUTER JOIN वाली query बिल्कुल सही चलेगी अगर आप अपना Oracle code सीधे अपने Semester 3 lab के लिए एक पुराने SQLite database में copy करते हैं? tap करने से पहले syntax नियम मन में विश्लेषित कीजिए।

Show the answer

नहीं, यह एक syntax error फेंकेगा! Oracle SQL FULL OUTER JOIN keyword को out of the box पूरी तरह support करता है। पर, basic SQLite environments FULL OUTER JOIN को स्वाभाविक रूप से support नहीं करते। SQLite में वही output पाने के लिए, आपको एक UNION operator इस्तेमाल करके एक LEFT JOIN और एक RIGHT JOIN जोड़ने होंगे। हमेशा अपने SQL dialect targets जाँचिए!

Theory

Oracle NVL फ़ायदा

एक LEFT OUTER JOIN इस्तेमाल करके असली management reports बनाते समय, ख़ाली fields blank spaces (NULL) के रूप में return होते हैं। आप Oracle के native NVL() function इस्तेमाल करके इन blanks को पढ़ने-लायक़ strings से बदल सकते हैं, एक भद्दे ख़ाली cell को एक professional 'No History Found' सूचना में बदलते हुए।

Summary

Key takeaways

  • Joins relational conditions इस्तेमाल करके अलग normalized tables भर records मिलाते हैं।
  • एक INNER JOIN पूर्ण value parity माँगता है, explicit matches बिना किसी records को छोड़ते हुए।
  • Outer joins gaps के लिए NULL entries बनाकर असंतुलित data tables सुरक्षित रखते हैं।
  • एक गुमशुदा join clause एक Cross Join मजबूर करता है जो एक आकस्मिक Cartesian product trigger करता है।
  • Oracle SQL FULL OUTER JOIN syntax को स्वाभाविक रूप से support करता है, जबकि SQLite को simulated workarounds चाहिए।
  • Memory hook: Inner joins एक पूर्ण match माँगते हैं, पर Outer joins किसी table को पीछे नहीं छोड़ते!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Advanced SQL

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Join Queries: Inner, Outer (Left/Right/Full), Cross · Concepts of Relational Database Management Systems · Gri-Learn