Equi Join and Inner Join in Oracle: इसके सबसे Common रूप में एक Join Operation उस समय नए Records या Rows Create करता है, जब दो Source Tables के Data आपस में Match होते हैं। क्योंकि हम Rows को Equal Values के लिए खोज रहे हैं, इसलिए इस तरह की Join को Equi-Join या Natural Equi-Join कहा जाता है। उदाहरण के लिए अगली दो Tables को देखिएः
Customers
CustID | FName | LName |
001 | Jane | Doe |
002 | John | Doe |
003 | Jane | Smith |
004 | John | Smith |
005 | Jane | Jones |
006 | John | Jones |
Orders Table
OrderID | CustID | OrderDate | OrderTotal |
001 | 002 | 10/10/99 | 250.65 |
002 | 002 | 2/21/O0 | 125.89 |
003 | 003 | 11/15/99 | 1567.99 |
004 | 004 | 11/22/99 | 180.92 |
005 | 004 | 12/15/99 | 565.O0 |
006 | 006 | 10/8/99 | 25.O0 |
007 | 006 | 11/12/99 | 85.O0 |
008 | 006 | 12/29/99 | 109.12 |
ध्यान दें कि CustID Column Customer के Relation का Primary Key है और यही CustID Column Foreign Key की तरह Orders Table में भी है। इसलिए Orders Table का CustID उन Customers से Belong करता है, जिन्होंने Order Place किया है।
मानलो कि हम उन Customers के नाम जानना चाहते हैं, जिन्होंने Order Place किया है। ये जानकारी प्राप्त करने के लिए हमें दो Tables को CustID Column के आधार पर Combined Rows Create करके Join करना होगा। यदि हम Database के शब्दों में कहें तो हम कह सकते हैं कि हम CustID के आधार पर दो Tables को Join कर रहे हैं। Join करने पर हमें प्राप्त होने वाली Resultant Table निम्नानुसार होती हैः
Result Table
CustID | FName | LName | OrderID | OrderDate | OrderTotal |
002 | John | Doe | 001 | 10/10/99 | 250.65 |
002 | John | Doe | 002 | 2/21/00 | 125.89 |
003 | Jane | Smith | 003 | 11/15/99 | 1597.99 |
004 | John | Smith | 004 | 11/22/99 | 180,92 |
004 | John | Smith | 005 | 12/15/99 | 565.00 |
006 | John | Jones | 006 | 10/8/99 | 25,00 |
006 | John | Jones | 007 | 11/12/99 | 85.00 |
006 | John | Jones | 008 | 12/29/99 | 109.12 |
Equi-Join को हम एक Table पर भी पूरी तरह से Apply कर सकते हैं। जब हम Equi-Join करते हैं, तब Join एक Source के हर Row को दूसरी Table के हर Row से Compare करता है। First Source Table की हर Row के लिए ये Second Source Table के Columns में Matching Data खोजता है और जैसे ही कोई Matching Row मिल जाता है, ये Result Table में एक नया Row Place कर देता है।
मानलो कि हम First Source के रूप में Customers Table को Use कर रहे हैं और Second Source के रूप में Orders Table को, तो Result Table निम्नानुसार Produce होती हैः
- सबसे पहले CustID 001 के लिए Orders Search किया जाता है। चूंकि Orders Table में इस ID के लिए कोई Matching Row नहीं है, इसलिए Equi-Join Result Table में कोई Row Place नहीं करता है।
- इसके बाद CustID 002 के लिए Orders को Search किया जाता है। चूंकि इस ID की दो Matching Rows Orders Table में हैं, इसलिए Equi-Join Result Table में दो Rows Place करता है और दोनों Rows में दो बार Same Customer Information को Store करके Order की Information को Store करता है।
- इसके बाद CustID 003 के लिए Orders को Search किया जाता है। इस ID से Related एक Order है, इसलिए Equi-Join एक और नया Row Result Table में Place कर देता है।
- फिर CustID 004 के लिए Orders को Search किया जाता है। इस ID से Related दो Matching Orders हैं, इसलिए Result Table में दो नए Rows को Add किया जाता है।
- फिर CustID 005 के लिए Orders को Search किया जाता है। इस ID से Related कोई Matching Orders नहीं हैं, इसलिए Result Table में कोई नया Row Add नहीं किया जाता है।
- फिर CustID 006 के लिए Orders को Search किया जाता है। इस ID से Related तीन Matching Orders हैं, इसलिए Result Table में तीन नई Rows को Add किया जाता है।
ध्यान दें कि यदि CustID दोनों Tables में Appear ना हो, तो कोई भी Row Result Table में Place नहीं होता है। Join के इस व्यवहार को Inner Join Group में रखा जाता है। यानी इस तरह की Joining को Inner Join कहा जाता है।
एक Join Operation को दो अन्य Operations जिन्हें Product व Restrict Operation कहा जाता है, के रूप में भी Implement किया जा सकता है। इस तरह के Operations में बहुत ज्यादा Data के साथ Manipulation होता है, इसलिए यदि DBMS इस तरह के Operations Perform करता है, तो Database बहुत ही धीमें काम करता है और Query की Performance बहुत ही कम हो जाती है।
Restrict Operation किसी Table के Matching Rows को छोडकर शेष Rows को Retrieve कर लेता है। जबकि Product Operation दोनों Tables के हर Row की Cartesian Product के रूप में जितने सम्भव हों, उतने Pair Create करता है। उदाहरण के लिए यदि Customer व Orders Table पर इस Operation को Perform किया जाए, तो Customer Table में 6 Rows हैं जबकि Orders Table में 8 Rows है अतः परिणामस्वरूप Result Table में कुल 48 Rows Create होंगे। इस Operation में CustID Column दो बार Appear होता है, क्योंकि ये Column दोनों Tables में Exist है। (Equi Join and Inner Join in Oracle)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Oracle 8i/9i SQL/PLSQL in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Oracle 8i/9i SQL/PLSQL in Hindi | Page: 587 | Format: PDF