SQL Join
Join
এর বাংলা অর্থ কোন কিছু একত্রিত করা। SQL -এ JOIN
দুই বা ততোধিক টেবিলকে একত্রিত করে।
একটি ডেটাবেজ দুই বা ততোধিক টেবিলের কলাম ফিল্ডের উপর ভিত্তিকরে যথাক্রমে দুই বা ততোধিক টেবিল থেকে সারি নিয়ে তাদের একত্রিত করার জন্য SQL JOIN clause
ব্যবহৃত হয়।
ANSI স্ট্যান্ডার্ড অনুসারে SQL এ ৫ ধরনের JOIN রয়েছে
নিম্নে JOIN
সমূহের তালিকা ও ব্যবহার তুলে ধরা হলোঃ
INNER JOIN
- উভয় টেবিলে অন্তত একটি কলামের মিল থাকলে সকল সারি রিটার্ন করে।LEFT JOIN
- ডান টেবিলের মিলিত সারিসহ বাম টেবিলের সকল সারি রিটার্ন করে।RIGHT JOIN
- বাম টেবিলের মিলিত সারিসহ ডান টেবিলের সকল সারি রিটার্ন করে।FULL JOIN
-যেকোনো একটি টেবিলের সাথে মিল থাকলে উভয় টেবিলের সকল সারি রিটার্ন করে।CROSS JOIN
- বাম পাশের মিলিত সারির একটি কলামের জন্য ডান পাশের মিলিত সারির প্রতিটি কলামকে রিটার্ন করে।
SQL এর সবচেয়ে সাধারণ JOIN
হলোঃ SQL INNER JOIN
।
join
এর সাধারণ সর্ত পুরণ হলে
SQL INNER JOIN
একাধিক টেবিল থেকে সারি রির্টান করে।
নমুনা ডেটাবেজ
JOIN
কীওয়ার্ডের ব্যবহার দেখানোর জন্য আমরা আমাদের নমুনা ডেটাবেজ Student ব্যবহার করবো।
নিচের অংশটি "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
---|---|---|---|
১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
নিচের অংশটি "Student_attendance" টেবিল থেকে নেওয়াঃ
রোল নাম্বার | উপস্থিতি | ভর্তির তারিখ |
---|---|---|
১০১ | ৮৯ | ০১-১১-২০১৫ |
১০২ | ৯১ | ০১-১১-২০১৫ |
১০৩ | ৮০ | ০১-১১-২০১৫ |
১০৪ | ৭৫ | ০২-১১-২০১৫ |
১০৫ | ৭৭ | ০২-১১-২০১৫ |
উপরের টেবিল দুটিতে লক্ষ্য করলে দেখবেন যে, "রোল নাম্বার(Roll_number)" কলামটি উভয় টেবিলে রয়েছে। "Student_details" টেবিলের "রোল নাম্বার(Roll_number)" কলামটি "Student_attendance" টেবিলের "রোল নাম্বার(Roll_number)" কলামকে নির্দেশ করে। "রোল নাম্বার(Roll_number)" কলামটি উভয় টেবিলের মধ্যে সম্পর্ক তৈরি করছে।
উদাহরণ
SELECT Student_attendance.Roll_number, Student_details.Student_name, Student_attendance.Admission_date
FROM Student_attendance INNER JOIN Student_details
ON Student_attendance.Roll_number=Student_details.Roll_number;
উপরের উদাহরণটির ফলাফল নিম্নের ন্যায় দেখাবেঃ
রোল নাম্বার | শিক্ষার্থীর নাম | ভর্তির তারিখ |
---|---|---|
১০১ | তামজীদ হাসান | ০১-১১-২০১৫ |
১০২ | মিনহাজুর রহমান | ০১-১১-২০১৫ |
১০৩ | মোঃ সবুজ হোসেন | ০১-১১-২০১৫ |
১০৪ | ইয়াসিন হোসেন | ০২-১১-২০১৫ |
১০৫ | ফরহাদ উদ্দিন | ০২-১১-২০১৫ |