SQL-এ দুটি টেবিল জয়েন করা যায় সাধারণ কলাম বা শর্তের ভিত্তিতে। SELF JOIN হলো একই টেবিলের সাথে নিজেরাই জয়েন করা। এতে টেবিলের দুটি কপি বিবেচনা করে রোগুলো নির্দিষ্ট শর্ত অনুযায়ী মিলিয়ে দেওয়া হয়।
সিনট্যাক্স
SELECT a.column1, b.column2 FROM table_name a, table_name b WHERE condition;
a ও b হলো একই টেবিলের দুটি এলিয়াস (alias)।
ধরুন 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 ব্যবহার করে SELF JOIN-এর ধাপসমূহ
- 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 |