हम SQL में दो टेबल को उनके बीच एक सामान्य कॉलम के आधार पर या किसी निर्दिष्ट शर्त के आधार पर जोड़ सकते हैं। दो SQL टेबल को जोड़ने के लिए विभिन्न प्रकार के JOIN उपलब्ध हैं।
यहां हम दो टेबल पर SELF JOIN के बारे में चर्चा करेंगे।
जैसा कि नाम से पता चलता है, SELF JOIN टेबल का स्वयं के साथ जॉइन है। यह जॉइन उसी टेबल की दो प्रतियों के बीच किया जाता है। टेबल की पंक्तियों का मिलान कुछ शर्त के आधार पर उसी टेबल की अन्य पंक्तियों के साथ किया जाता है।
सिंटैक्स
SELECT a.column1, b.column2 FROM table_name a, table_name b WHERE condition;
a और b उसी टेबल के दो उपनाम हैं।
table_name उस टेबल का नाम है जिस पर सेल्फ जॉइन किया जाना है। चूंकि हम सेल्फ जॉइन कर रहे हैं, इसलिए दोनों स्थानों पर वही टेबल नाम उपयोग किया जाता है।
उदाहरण
मान लीजिए Students नाम की एक टेबल है:
+----------+--------------+-----------+ | id | Student_name | Dept_id | +----------+--------------+-----------+ | 1 | Rahul | 120 | | 2 | Rohit | 121 | | 3 | Kirat | 121 | | 4 | Inder | 123 | +----------+--------------+-----------+
हम उपरोक्त टेबल पर शर्त a.Dept_id < b.Dept_id के आधार पर सेल्फ जॉइन करेंगे। इसका मतलब है कि टेबल की प्रत्येक पंक्ति का मिलान टेबल की उन अन्य पंक्तियों के साथ किया जाएगा जिनके Dept_id उस विशेष पंक्ति से कम हैं।
Python में MySQL का उपयोग करके दो टेबल पर सेल्फ जॉइन करने के चरण
- MySQL कनेक्टर आयात करें
connect()से कनेक्शन स्थापित करेंcursor()से कर्सर ऑब्जेक्ट बनाएं- उपयुक्त MySQL स्टेटमेंट से क्वेरी बनाएं
execute()से SQL क्वेरी निष्पादित करें- कनेक्शन बंद करें
import mysql.connector
db = mysql.connector.connect(
host="your_host",
user="your_username",
password="your_password",
database="database_name"
)
cursor = db.cursor()
query = "SELECT a.Dept_id, b.Student_name FROM Students a, Students b WHERE a.Dept_id < b.Dept_id"
cursor.execute(query)
rows = cursor.fetchall()
for x in rows:
print(x)
db.close()
आउटपुट
| Dept_id | Student_name |
|---|---|
| 120 | Rohit |
| 120 | Kirat |
| 120 | Inder |
| 121 | Inder |
| 121 | Inder |