कभी-कभी आपको एकाधिक तालिकाओं से डेटा प्रदर्शित करने की आवश्यकता होती है। ऐसा करने के लिए आपको एक टेबल को दूसरी टेबल से लिंक करने की जरूरत है। ऐसे कई तरीके हैं जिनसे हम कई टेबल से डेटा प्राप्त कर सकते हैं। यहां मैं उदाहरणों के साथ ओरेकल जॉइन पर ध्यान केंद्रित करूंगा। यह सामान्य रूप से किसी भी एसक्यूएल जॉइन के लिए भी मान्य है। . मैं इनर जॉइन, आउटर जॉइन, क्रॉस जॉइन, नेचुरल जॉइन, कार्टेशियन जॉइन को उदाहरणों के साथ समझाऊंगा
Oracle जॉइन करता है
एक Oracle शामिल होता है एक क्वेरी है जो दो या अधिक ऑरैकल तालिकाओं से पंक्तियों को जोड़ती है।
जब भी FROM क्लॉज में कई टेबल दिखाई देते हैं तो Oracle एक जॉइन करता है। दो तालिकाओं में शामिल होने के लिए, आपको उन सामान्य स्तंभों की पहचान करने की आवश्यकता है जो दो तालिकाओं से संबंधित हैं। WHERE क्लॉज में आप FROM क्लॉज में सूचीबद्ध तालिकाओं के बीच संबंध को परिभाषित करते हैं।
Oracle Joins (Sql Joins) के लिए कुछ दिशानिर्देश
1) टेबल्स को जोड़ने वाले सेलेक्ट स्टेटमेंट को लिखते समय, स्पष्टता के उद्देश्य के लिए कॉलम नाम से पहले टेबल के नाम से पहले यह अच्छा अभ्यास है।
2) m टेबल में शामिल होने के लिए, हमें कम से कम m-1 शर्तों की आवश्यकता होती है
3) यदि टेबल का नाम लंबा है तो हम टेबल उपनाम के लिए टेबल उपनाम का उपयोग कर सकते हैं। तालिका कोड को छोटा दिखता है और इसलिए कम मेमोरी
4) यदि आप कॉलम का चयन करते समय टेबल_नाम या टेबल उपनाम का उपयोग नहीं कर रहे हैं और यदि एक से अधिक टेबल में एक ही कॉलम का नाम है, तो हमें कॉलम के लिए टेबल_नाम निर्दिष्ट करना चाहिए जो सभी टेबलों में सामान्य है
इनर जॉइन
दो तालिकाओं को जोड़ने के लिए उपयोग किया जाने वाला सबसे आम ऑपरेटर समानता ऑपरेटर (=) है। इसे इक्वैलिटी जॉइन या equijoin . कहा जाता है . इस साधारण जुड़ाव को आंतरिक जुड़ाव . के रूप में भी जाना जाता है
ओरेकल इनर जॉइन उदाहरण
Syntax
Select tab1.col,tab2.col
from tab1 ,tab2
where tab1.col=tab2.col
SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP , DEPT
where EMP. DEPTNO= DEPT. DEPTNO;
तीन या अधिक टेबल के जॉइन को निष्पादित करने के लिए, ओरेकल जॉइन कंडीशन के आधार पर दो टेबल्स को जोड़ता है, फिर जॉइन कंडीशन के आधार पर रिजल्ट को दूसरी टेबल से जोड़ता है और तब तक दोहराता है जब तक कि सभी टेबल शामिल नहीं हो जाते।
जटिल जोड़
WHERE क्लॉज में एक या अधिक शर्तें जोड़ें। उदाहरण के लिए, यदि आप यूके के बाहर के सभी विभागों और उनके स्थानों में रुचि रखते हैं, तो इसका उपयोग करें
SELECT LOCATIONS.LOCATION_ID, CITY, DEPARTMENT_NAME
FROM LOCATIONS, DEPARTMENTS
WHERE LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
AND COUNTRY_ID != 'UK';
गैर-इक्विजॉइन
एक गैर-इक्विजॉइन समानता ऑपरेटर के अलावा शामिल होने की स्थिति है।
यह एक इनर जॉइन स्टेटमेंट है जो अलग-अलग टेबल से पंक्तियों का मिलान करने के लिए एक असमान ऑपरेशन (यानी:<>,>, <, =, BETWEEN, आदि) का उपयोग करता है
SELECT e.ename, e.sal, s.grade
FROM emp e, sal_grade s
WHERE e.sal BETWEEN s.low_sal AND s.high_sal;
कार्टेशियन उत्पाद या कार्टेशियन जॉइन या क्रॉस जॉइन
-एक कार्टेशियन जॉइन (या कार्टेशियन उत्पाद) (या क्रॉस जॉइन) तब होता है जब डेटा को दो या अधिक टेबल से चुना जाता है और जॉइन कंडीशन को परिभाषित किया जाता है या WHERE क्लॉज में कोई सामान्य संबंध परिभाषित नहीं किया जाता है
-यदि एक जॉइन किया जाता है और कोई जॉइन कंडीशन निर्दिष्ट नहीं की जाती है, तो कार्टेशियन उत्पाद का परिणाम होता है। कार्टेशियन उत्पाद एक परिणाम सेट है जो दो तालिकाओं की कुल पंक्तियों का उत्पाद है। यदि तालिका "P" में 100 पंक्तियाँ हैं और तालिका "Q" में 100 पंक्तियाँ हैं और एक कार्टेशियन उत्पाद विकसित किया गया है, तो परिणामी परिणाम सेट में 10000 पंक्तियाँ होंगी। यदि कोई क्वेरी तीन या अधिक तालिकाओं में शामिल हो जाती है, तो अनुकूलक एक कार्टेशियन उत्पाद को शामिल करने के क्रम को चुनने का एक तरीका खोज सकता है, लेकिन उस पर भरोसा नहीं करता है।
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME FROM EMP , DEPT ;
or
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME FROM EMP cross join DEPT ;
बाहरी जुड़ाव
इनर जॉइन हमने देखा है, जॉइन कंडीशन के अनुसार दो या दो से अधिक टेबल से मैचिंग रो को वापस करें। आउटर जॉइन मैकेनिज्म एक टेबल से डेटा लौटाता है, भले ही जॉइनिंग टेबल में कोई संबंधित पंक्ति न हो।
तीन बाहरी जोड़ होते हैं
a) लेफ्ट आउटर जॉइन या लेफ्ट जॉइन
b) राइट आउटर जॉइन या राइट जॉइन
c) फुल आउटर जॉइन या फुल जॉइन
बाएं बाहरी जुड़ाव
दोनों तालिकाओं से मेल खाने वाली पंक्तियों के साथ-साथ जॉइन क्लॉज के बाईं ओर तालिका से बेजोड़ पंक्तियों को लौटाता है।
लेफ्ट आउटर जॉइन लेफ्ट टेबल से सभी रिकॉर्ड लौटाएगा और राइट टेबल से केवल वे रिकॉर्ड जो राइट टेबल के साथ इंटरसेक्ट करते हैं
यहां Oracle लेफ्ट आउटर जॉइन का उदाहरण दिया गया है
Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;
ओरेकल सिंटैक्स (+) में शामिल हों :Oracle डेटाबेस में, हम बाएं बाहरी जुड़ाव के लिए प्लस साइन सिंटैक्स का भी उपयोग कर सकते हैं। इस मामले में प्लस जॉइन समीकरण के दाईं ओर है।
Example:
select empno,ename,emp.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+) ;
दायां बाहरी जुड़ाव
दोनों तालिकाओं से मेल खाने वाली पंक्तियों के साथ-साथ शामिल होने वाले खंड के दाईं ओर तालिका से बेजोड़ पंक्तियों को लौटाता है।
यहाँ Oracle राइट आउटर जॉइन का उदाहरण दिया गया है
Example:
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;
ओरेकल सिंटैक्स (+) में शामिल हों :Oracle डेटाबेस में, हम RIGHT OUTER JOIN के लिए प्लस साइन सिंटैक्स का भी उपयोग कर सकते हैं। इस मामले में राइट जॉइन का संकेत तब दिया जाता है जब प्लस साइन समीकरण के बाईं ओर होता है।
Example:
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno ;
पूर्ण बाहरी जुड़ाव
इस प्रकार की जॉइन LEFT-हैंड टेबल और राइट-हैंड टेबल से सभी पंक्तियों को उस स्थान पर नल के साथ लौटाती है जहां जॉइन कंडीशन पूरी नहीं होती है
यहाँ Oracle Full Outer Join का उदाहरण दिया गया है
select empno,ename,dept.deptno,dname
from emp
full OUTER JOIN dept
on emp.deptno=dept.deptno;
यह क्वेरी दोनों तालिकाओं से सभी पंक्तियों को वापस कर देगी। E.DEPT_ID (+) =D.DEPT_ID (+) का उपयोग करके Oracle सिंटैक्स का उपयोग करना असंभव है क्योंकि (+) चिह्न केवल एक तालिका का संदर्भ दे सकता है। हमें इसे प्राप्त करने के लिए + चिह्न
. का उपयोग करके संघ का उपयोग करना होगाselect empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+)
union
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno;
कुछ RDBMS फुल आउटर जॉइन क्लॉज का समर्थन नहीं करते हैं, तो हम इसे कवर करने के लिए नीचे का उपयोग कर सकते हैं
select empno,ename,dept.deptno,dname
from emp
left OUTER JOIN dept
on emp.deptno=dept.deptno
union
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;
प्राकृतिक रूप से शामिल हों
नेचुरल जॉइन निर्दिष्ट करता है कि जॉइन दो टेबल पर समान नामों वाले सभी कॉलमों को जोड़ता है।
मूल रूप से यह दोनों तालिकाओं के सामान्य स्तंभों की एक दूसरे से तुलना करता है। प्राकृतिक जुड़ाव करने से पहले दोनों तालिकाओं में सामान्य कॉलम मौजूद हैं या नहीं, इसकी जांच करनी चाहिए।
Example
SELECT EMP_ID,EMP_NAME, DEPT_ID,DEPARTMENT_NAME FROM EMP NATURAL JOIN DEPT;
यहां dept_id टेबल emp और dept के बीच एक ही कॉलम है
प्राकृतिक जुड़ाव दो से अधिक तालिकाओं में शामिल हो सकता है
आशा है कि आपको उदाहरणों के साथ Oracle जॉइन की यह पोस्ट पसंद आई होगी।
संबंधित लेख
Oracle sql ट्यूटोरियल
Oracle Sql सबक्वेरी
Oracle सेट ऑपरेटर्स
Oracle व्यू
sql क्वेरी कैसे लिखें
ऑटो इंक्रीमेंट कॉलम - अनुक्रम
Oracle में क्रॉस जॉइन करें
उदाहरणों के साथ स्वयं ऑरैकल में शामिल हों
ओरेकल सिंटैक्स उदाहरणों में शामिल हों
Oracle में हैश जॉइन करें
मुख्य>