Complex Joins হল SQL কোয়েরির মধ্যে একাধিক টেবিলের ডেটাকে একত্রিত (combine) করার জন্য ব্যবহৃত একটি পদ্ধতি। যেখানে সাধারণ INNER JOIN, LEFT JOIN, RIGHT JOIN, এবং FULL JOIN এর মতো একক জয়েনগুলো ব্যবহৃত হয়, সেগুলোর তুলনায় Complex Joins তে একাধিক টেবিল বা শর্তের সাথে জয়েন করা হয়।
টেরাডেটাতে Complex Joins একাধিক টেবিলের ডেটা একত্র করতে সহায়ক হয় এবং এটি বড়, জটিল ডেটাবেস প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। এতে যেমন একাধিক টেবিল জয়েন করা হয়, তেমনই একাধিক শর্ত এবং ফিল্টার যুক্ত হতে পারে।
Complex Joins এর উদাহরণ
১. Multiple Joins
একাধিক টেবিলের মধ্যে জয়েন করতে INNER JOIN, LEFT JOIN, RIGHT JOIN বা FULL JOIN ব্যবহার করা হয়। উদাহরণস্বরূপ:
SELECT A.employee_id, A.name, B.department_name, C.salary
FROM employees A
INNER JOIN departments B ON A.department_id = B.department_id
LEFT JOIN salaries C ON A.employee_id = C.employee_id;
এখানে, employees টেবিলের সাথে departments এবং salaries টেবিলের মধ্যে একাধিক জয়েন করা হয়েছে। এখানে একটি INNER JOIN এবং একটি LEFT JOIN ব্যবহার করা হয়েছে।
২. Self Join
কখনো কখনো একটি টেবিলের মধ্যে নিজের সাথে জয়েন করতে হয়, যাকে Self Join বলা হয়। এটি সাধারণত প্যারেন্ট-চাইল্ড সম্পর্ক বিশ্লেষণে ব্যবহৃত হয়।
SELECT A.employee_id, A.name, B.name AS manager_name
FROM employees A
INNER JOIN employees B ON A.manager_id = B.employee_id;
এখানে, employees টেবিলকে নিজের সাথে manager_id এর ভিত্তিতে জয়েন করা হয়েছে, যাতে কর্মচারী এবং তাদের ম্যানেজারের নাম একসাথে পাওয়া যায়।
৩. Cross Join
Cross Join দুটি টেবিলের মধ্যে প্রতিটি রেকর্ডের সাথে প্রতিটি রেকর্ডের সংমিশ্রণ তৈরি করে। এটি বেশিরভাগ ক্ষেত্রে পরিসংখ্যান বিশ্লেষণ বা কম্বিনেশন তৈরির জন্য ব্যবহৃত হয়।
SELECT A.product_id, B.salesperson_id
FROM products A
CROSS JOIN salespeople B;
এটি products এবং salespeople টেবিলের মধ্যে সমস্ত সম্ভাব্য কম্বিনেশন তৈরি করবে।
Subqueries কী?
Subqueries হল SQL কোয়েরি যেখানে একটি কোয়েরি অন্য একটি কোয়েরি ভিতরে থাকে। সাধারণত সাবকোয়েরি SELECT, INSERT, UPDATE বা DELETE স্টেটমেন্টের অংশ হিসেবে ব্যবহৃত হয়।
Subqueries দুটি প্রধান প্রকারে বিভক্ত:
- Scalar Subquery: একটি একক মান রিটার্ন করে।
- Correlated Subquery: বাহ্যিক কোয়েরি (outer query) এর উপর নির্ভরশীল থাকে এবং বাহ্যিক কোয়েরির সাথে সম্পর্কিত মান রিটার্ন করে।
Subqueries এর উদাহরণ
১. Scalar Subquery
Scalar Subquery একটি একক মান রিটার্ন করে। এটি সাধারণত WHERE বা SELECT ক্লজে ব্যবহৃত হয়।
SELECT employee_id, name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);
এখানে, একটি Scalar Subquery AVG(salary) রিটার্ন করছে, যা পুরো employees টেবিলের গড় বেতন বের করে এবং তারপর প্রধান কোয়েরি সেই মানের চেয়ে বড় বেতনযুক্ত কর্মচারীদের নির্বাচন করছে।
২. Correlated Subquery
Correlated Subquery বাহ্যিক কোয়েরি (outer query) এর উপর ভিত্তি করে ডেটা নির্বাচন করে। প্রতিটি রেকর্ডের জন্য সাবকোয়েরি একটি নতুন মান হিসাব করে।
SELECT A.employee_id, A.name, A.salary
FROM employees A
WHERE A.salary > (SELECT AVG(B.salary) FROM employees B WHERE A.department_id = B.department_id);
এখানে, প্রতিটি employee এর জন্য তার নিজস্ব বিভাগের গড় বেতনের সাথে তুলনা করা হচ্ছে। বাহ্যিক কোয়েরি এবং সাবকোয়েরি একে অপরের সাথে সম্পর্কিত, কারণ বাহ্যিক কোয়েরির department_id সাবকোয়েরিতে ব্যবহৃত হচ্ছে।
৩. Subquery in SELECT Clause
একটি সাবকোয়েরি SELECT ক্লজের মধ্যে ব্যবহার করা হতে পারে, যেখানে আমরা একটি নতুন কলাম হিসাবে সাবকোয়েরির ফলাফল দেখতে পাই।
SELECT employee_id, name,
(SELECT department_name FROM departments WHERE department_id = employees.department_id) AS department_name
FROM employees;
এখানে, employees টেবিলের জন্য প্রতিটি কর্মচারীর বিভাগ নাম সাবকোয়েরির মাধ্যমে নির্বাচিত হচ্ছে এবং সেটি একটি নতুন কলাম হিসাবে প্রদর্শিত হচ্ছে।
Complex Joins এবং Subqueries এর মধ্যে পার্থক্য
| বিষয় | Complex Joins | Subqueries |
|---|---|---|
| অর্থ | একাধিক টেবিলকে একসাথে যুক্ত করা | একটি কোয়েরির মধ্যে অন্য কোয়েরি রাখা |
| ব্যবহার | একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন | একটি একক কোয়েরি দ্বারা ডেটা রিটার্ন করা |
| কার্যকারিতা | একসাথে একাধিক টেবিলের ডেটা প্রক্রিয়া | একক মান বা ফলাফল সাবকোয়েরির মাধ্যমে বের করা |
| উদাহরণ | INNER JOIN, LEFT JOIN, RIGHT JOIN, CROSS JOIN | SELECT, UPDATE, DELETE স্টেটমেন্টের মধ্যে ব্যবহার |
সারাংশ
Complex Joins এবং Subqueries টেরাডেটাতে অত্যন্ত গুরুত্বপূর্ণ SQL কৌশল যা ডেটা একত্রিত করার জন্য ব্যবহৃত হয়। Complex Joins একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে এবং একযোগে ডেটা প্রক্রিয়া করার সুযোগ দেয়। অন্যদিকে, Subqueries একটি কোয়েরির মধ্যে অন্য একটি কোয়েরি অন্তর্ভুক্ত করে এবং প্রাথমিক কোয়েরির ফলাফল নির্ধারণ করতে সহায়তা করে। এসব কৌশল ব্যবহার করে জটিল ডেটাবেস বিশ্লেষণ এবং রিপোর্ট তৈরি করা সম্ভব হয়।
Read more