জয়েন একটি সম্পর্কিত কলাম, প্রায়ই একটি ফরেন কী-এর ভিত্তিতে দুই বা ততোধিক টেবিলের সারি একত্র করে। এখানেই রিলেশনাল ডেটাবেস তার নামের "রিলেশনাল" অংশটি সত্যিকারভাবে অর্জন করে।
শুধু সেই সারিগুলো ফেরত দেয় যাদের দুটো টেবিলেই মিল আছে।
SELECT columns
FROM tableA
INNER JOIN tableB ON condition;SELECT e.name, d.department_name
FROM Employee e
INNER JOIN Department d
ON e.department_id = d.id;সাধারণ ভুল
ভুল কলামে জয়েন করা আর নিঃশব্দে সারি গুণিত হয়ে যাওয়া।
বাম টেবিলের প্রতিটি সারি ফেরত দেয়, ডান টেবিলের শুধু মিলে যাওয়া সারি।
SELECT columns
FROM tableA
LEFT JOIN tableB ON condition;SELECT e.name, d.department_name
FROM Employee e
LEFT JOIN Department d
ON e.department_id = d.id;সাধারণ ভুল
LEFT JOIN অমিলিত বাম-পাশের সারি বাদ দেবে বলে আশা করা — এটি কখনো তা করে না, এটাই একটি LEFT JOIN-এর পুরো উদ্দেশ্য।
ডান টেবিলের প্রতিটি সারি ফেরত দেয়, বাম টেবিলের শুধু মিলে যাওয়া সারি।
SELECT columns
FROM tableA
RIGHT JOIN tableB ON condition;SELECT e.name, d.department_name
FROM Employee e
RIGHT JOIN Department d
ON e.department_id = d.id;সাধারণ ভুল
টেবিলের ক্রম উল্টে দিয়ে একটি LEFT JOIN আরও পরিষ্কারভাবে পড়া যেত এমন জায়গায় অভ্যাসবশত RIGHT JOIN ব্যবহার করা।
দুটো টেবিলেরই সব সারি ফেরত দেয়, মিল থাকুক বা না থাকুক।
SELECT columns
FROM tableA
FULL JOIN tableB ON condition;SELECT e.name, d.department_name
FROM Employee e
FULL JOIN Department d
ON e.department_id = d.id;সাধারণ ভুল
প্রতিটি ডেটাবেস ইঞ্জিন সরাসরি FULL JOIN সমর্থন করে না — যেমন MySQL করে না, আর এর জন্য একটি বিকল্প উপায় প্রয়োজন।
| জয়েন ধরন | যা ফেরত দেয় |
|---|---|
| INNER JOIN | শুধু দুটো টেবিলেই মিলে যাওয়া সারি |
| LEFT JOIN | বাম-টেবিলের প্রতিটি সারি, মিলে যাওয়া ডান-টেবিলের তথ্য বা NULL |
| RIGHT JOIN | ডান-টেবিলের প্রতিটি সারি, মিলে যাওয়া বাম-টেবিলের তথ্য বা NULL |
| FULL JOIN | দুটো টেবিলেরই প্রতিটি সারি, মিল থাকুক বা না থাকুক |
জয়েন আপনাকে আলাদা আলাদা টেবিল থেকে সম্পর্কিত তথ্য একসাথে টেনে আনতে দেয়। পরের পাঠে আমরা টেবিল একত্র করা থেকে সরে গিয়ে সেগুলোর ভেতরের মান সংক্ষিপ্ত করার দিকে যাব, SQL-এর বিল্ট-ইন ফাংশন দিয়ে।