Joins এবং Subqueries দুটোই SQL-এ ব্যবহৃত হয় একাধিক টেবিল থেকে তথ্য সংগ্রহ করতে, কিন্তু তাদের কাজ করার পদ্ধতি এবং ব্যবহারে কিছু মৌলিক পার্থক্য রয়েছে।
এখানে আমরা Joins এবং Subqueries এর মধ্যে পার্থক্যগুলি বিস্তারিতভাবে আলোচনা করবো:
1. Joins (জয়েনস)
JOIN SQL কমান্ডটি একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করে এবং সেগুলোর মধ্যে থাকা সম্পর্কিত তথ্য একসাথে নিয়ে আসে। যখন দুটি বা ততোধিক টেবিলের মধ্যে সম্পর্ক থাকে (যেমন: Foreign Key), তখন JOIN ব্যবহার করা হয় একাধিক টেবিল থেকে তথ্য সংগ্রহ করতে।
বিভিন্ন ধরনের JOIN:
- INNER JOIN: শুধুমাত্র সেগুলি নির্বাচন করে যেগুলোর মধ্যে উভয় টেবিলেই মিলে এমন রেকর্ড থাকে।
- LEFT JOIN (বা LEFT OUTER JOIN): প্রথম (বাম) টেবিলের সব রেকর্ড এবং দ্বিতীয় (ডান) টেবিলের মিল থাকা রেকর্ড নির্বাচন করে।
- RIGHT JOIN (বা RIGHT OUTER JOIN): দ্বিতীয় (ডান) টেবিলের সব রেকর্ড এবং প্রথম (বাম) টেবিলের মিল থাকা রেকর্ড নির্বাচন করে।
- FULL JOIN (বা FULL OUTER JOIN): উভয় টেবিলের সব রেকর্ড নির্বাচন করে, যেখানে মিলে এমন রেকর্ড থাকলে সেটা প্রদর্শন করা হয়।
JOIN উদাহরণ:
ধরা যাক, আমাদের দুটি টেবিল আছে:
employees(যেখানে কর্মচারীর তথ্য রয়েছে)departments(যেখানে বিভাগ সম্পর্কিত তথ্য রয়েছে)
INNER JOIN ব্যবহার করে কর্মচারী এবং বিভাগের তথ্য সংগ্রহ:
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;
এখানে, employees.department_id এবং departments.department_id এর মধ্যে সম্পর্ক তৈরি করে, এবং মিল থাকা রেকর্ডগুলো দেখানো হবে।
2. Subqueries (সাবকুয়েরি)
Subquery বা Nested Query হলো একটি কুয়েরি যা আরেকটি কুয়েরির ভিতরে থাকে। এটি একটি কুয়েরি যা অন্য কুয়েরির আউটপুটকে ইনপুট হিসেবে ব্যবহার করে। সাবকুয়েরি সাধারণত WHERE, FROM, অথবা SELECT ক্লজে ব্যবহার করা হয়।
Subquery উদাহরণ:
ধরা যাক, আমাদের employees টেবিলের মধ্যে যে কর্মচারীরা সর্বোচ্চ বেতন পায়, তাদের তথ্য দেখতে চাই।
SELECT name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
এখানে, সাবকুয়েরি (SELECT MAX(salary) FROM employees) প্রথমে সর্বোচ্চ বেতন খুঁজে বের করবে এবং প্রধান কুয়েরি সেই বেতন গ্রহণ করা কর্মচারীর নাম এবং বেতন ফিরিয়ে দিবে।
Joins এবং Subqueries এর মধ্যে পার্থক্য:
| বিষয় | Joins | Subqueries |
|---|---|---|
| ব্যবহার | একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয় | এক কুয়েরির আউটপুট অন্য কুয়েরিতে ইনপুট হিসেবে ব্যবহৃত হয় |
| প্রকারভেদ | INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN | Scalar, Row, Table Subqueries |
| পারফরমেন্স | সাধারণত দ্রুত, কারণ এটি একযোগে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে | মাঝে মাঝে ধীর হতে পারে, কারণ সাবকুয়েরি আলাদা কুয়েরি হিসেবে সম্পন্ন হয় |
| ফলাফল | একাধিক টেবিলের তথ্য একত্রিত করে একটি সিঙ্গল আউটপুট প্রদান করে | সাবকুয়েরির আউটপুট মূল কুয়েরির শর্ত হিসাবে ব্যবহার করা হয় |
| ব্যবহারের ক্ষেত্রে | যখন একাধিক টেবিলের মধ্যে সম্পর্ক থাকতে হয় | যখন একটি নির্দিষ্ট শর্তের ভিত্তিতে ডেটা নির্বাচন করতে হয় |
| নির্ভরতা | JOIN সাধারণত ডেটার মধ্যে সম্পর্ক নির্ভর করে | Subqueries এক কুয়েরির ভিতর অন্য কুয়েরির ফলাফল নির্ভর করে |
সংক্ষেপে:
- Joins সাধারণত একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করে এবং একযোগে তাদের তথ্য নিয়ে আসে।
- Subqueries একটি কুয়েরির ভিতরে অন্য কুয়েরি থাকতে পারে, যা মূল কুয়েরি সঠিকভাবে কাজ করতে সাহায্য করে, বিশেষ করে শর্তাবলী নির্ধারণ করতে।
উভয় পদ্ধতিরই ব্যবহার উপযোগী, তবে এটি নির্ভর করে আপনি কী ধরনের প্রশ্ন করতে চান এবং আপনার ডেটাবেসের কাঠামো কেমন।
Read more