✏️ Explanatory Question

সেলফ জয়েন বলতে কী বোঝো? একটি উদাহরণ দাও যেখানে সেলফ জয়েন এর প্রয়োজনীয়তা আছে।

👁 1 Views
📘 Detailed Answer
🟢 Easy
💡

Answer with Explanation

SQL Self Join

Exam-ready answer with definition, need, syntax, example, SQL query, output, explanation, and conclusion.

Question 11

প্রশ্ন

সেলফ জয়েন বলতে কী বোঝো? একটি উদাহরণ দাও যেখানে সেলফ জয়েন এর প্রয়োজনীয়তা আছে।

Answer: Self Join in SQL

ভূমিকা

SQL-এ JOIN সাধারণত দুই বা তার বেশি table-এর মধ্যে সম্পর্কযুক্ত data বের করার জন্য ব্যবহার করা হয়। কিন্তু কখনও কখনও এমন পরিস্থিতি হয় যেখানে একটি table-এর data একই table-এর অন্য rows-এর সঙ্গে compare করতে হয়। এই ধরনের ক্ষেত্রে Self Join ব্যবহার করা হয়।

Self Join হলো এমন একটি join যেখানে একটি table-কে নিজের সঙ্গেই join করা হয়। অর্থাৎ একই table-কে query-তে দুইবার ব্যবহার করা হয়, কিন্তু আলাদা alias name দিয়ে table-টিকে দুইটি আলাদা table-এর মতো treat করা হয়।

সহজ ভাষায়: একই table-এর row-গুলির মধ্যে relationship খুঁজে বের করার জন্য যখন table-টি নিজের সঙ্গেই join করা হয়, তখন তাকে Self Join বলা হয়।

Self Join-এর সংজ্ঞা

Self Join হলো SQL-এর একটি technique, যেখানে একই table-কে নিজের সঙ্গেই join করা হয় যাতে একই table-এর rows-এর মধ্যে সম্পর্ক বা comparison দেখানো যায়।

Definition: A self join is a join in which a table is joined with itself by using different aliases for the same table.

Self Join আলাদা কোনো নতুন join type নয়। এটি সাধারণত INNER JOIN, LEFT JOIN বা অন্য join ব্যবহার করেই করা হয়। শুধু একই table-কে দুইবার alias দিয়ে ব্যবহার করা হয়।

Self Join-এ Alias কেন দরকার?

Self Join করার সময় একই table query-তে দুইবার ব্যবহার করা হয়। তাই SQL engine বুঝতে পারে না কোন column table-এর কোন copy থেকে নেওয়া হচ্ছে। এই ambiguity দূর করার জন্য table alias ব্যবহার করা হয়।

যেমন, Employee table-কে দুইবার ব্যবহার করলে আমরা alias দিতে পারি:


Employee AS E
Employee AS M
            

এখানে E employee-এর জন্য এবং M manager-এর জন্য ব্যবহার করা হয়েছে।

Self Join-এর সাধারণ Syntax


SELECT A.column_name, B.column_name
FROM table_name AS A
JOIN table_name AS B
ON A.common_column = B.related_column;
            

এখানে একই table A এবং B নামে দুইটি alias দিয়ে ব্যবহার করা হয়েছে। তারপর ON condition-এর মাধ্যমে একই table-এর দুইটি row-এর মধ্যে relationship তৈরি করা হয়েছে।

Self Join-এর প্রয়োজনীয়তা

Self Join তখন দরকার হয় যখন একই table-এর মধ্যে থাকা records-এর মধ্যে relationship থাকে। অর্থাৎ table-এর একটি row অন্য row-এর সঙ্গে সম্পর্কযুক্ত হলে Self Join ব্যবহার করা হয়।

Self Join ব্যবহার করার ক্ষেত্র

  • Employee এবং Manager-এর relationship দেখাতে।
  • Category এবং Subcategory-এর relationship দেখাতে।
  • Parent এবং Child record খুঁজতে।
  • একই table-এর records compare করতে।
  • Duplicate বা similar records খুঁজতে।
  • Hierarchy বা organizational structure দেখাতে।

Exam Point: Self Join-এর সবচেয়ে common example হলো Employee table, যেখানে employee এবং manager দুজনই একই table-এ থাকে।

উদাহরণ: Employee এবং Manager Relationship

ধরা যাক, একটি company-এর Employee table আছে। এই table-এ employee-এর তথ্য এবং তার manager-এর ID সংরক্ষিত আছে। যেহেতু manager নিজেও একজন employee, তাই manager-এর record-ও একই Employee table-এ থাকে।

তাই employee-এর নাম এবং তার manager-এর নাম একসঙ্গে বের করার জন্য Self Join প্রয়োজন।

Employee Table

Emp_ID Emp_Name Designation Manager_ID
1 Rahul CEO NULL
2 Riya Manager 1
3 Karim Developer 2
4 Anita Tester 2
5 Suman Developer 2

এখানে Manager_ID column একই table-এর Emp_ID-কে refer করছে। অর্থাৎ কোন employee কার অধীনে কাজ করছে তা Manager_ID দিয়ে বোঝানো হয়েছে।

Self Join SQL Query

Employee-এর নাম এবং manager-এর নাম বের করার query:


SELECT 
    E.Emp_Name AS Employee_Name,
    M.Emp_Name AS Manager_Name
FROM Employee AS E
JOIN Employee AS M
ON E.Manager_ID = M.Emp_ID;
            

এখানে Employee table-কে দুইবার ব্যবহার করা হয়েছে:

  • E alias employee record বোঝাচ্ছে।
  • M alias manager record বোঝাচ্ছে।
  • E.Manager_ID = M.Emp_ID condition employee এবং তার manager-কে match করছে।

Output

Employee_Name Manager_Name
Riya Rahul
Karim Riya
Anita Riya
Suman Riya

এখানে দেখা যাচ্ছে Riya-এর manager Rahul এবং Karim, Anita ও Suman-এর manager Riya।

Rahul-এর Manager_ID NULL, তাই INNER JOIN result-এ Rahul আসেনি। কারণ Rahul-এর কোনো manager নেই।

CEO বা Manager না থাকা Employee দেখাতে LEFT JOIN

যদি আমরা এমন employee-কেও দেখতে চাই যার manager নেই, তাহলে LEFT JOIN ব্যবহার করা যায়।


SELECT 
    E.Emp_Name AS Employee_Name,
    M.Emp_Name AS Manager_Name
FROM Employee AS E
LEFT JOIN Employee AS M
ON E.Manager_ID = M.Emp_ID;
            

Output

Employee_Name Manager_Name
Rahul NULL
Riya Rahul
Karim Riya
Anita Riya
Suman Riya

এখানে Rahul-এর manager নেই, তাই Manager_Name column-এ NULL এসেছে।

Query-এর ব্যাখ্যা

Query Part Explanation
Employee AS E Employee table-এর প্রথম copy, যা employee information বোঝায়।
Employee AS M Employee table-এর দ্বিতীয় copy, যা manager information বোঝায়।
E.Manager_ID = M.Emp_ID Employee-এর Manager_ID manager-এর Emp_ID-এর সঙ্গে match করা হয়।
E.Emp_Name Employee-এর নাম দেখায়।
M.Emp_Name Manager-এর নাম দেখায়।

Self Join-এর আরও কিছু Practical Example

Use Case Explanation
Employee-Manager একই Employee table থেকে employee এবং manager-এর নাম বের করা।
Category-Subcategory একই Category table থেকে parent category এবং child category বের করা।
Duplicate Checking একই table-এর rows compare করে duplicate data খুঁজে বের করা।
Student Pairing একই class-এর students-এর pair তৈরি করা।
Product Comparison একই Product table-এর products-এর price compare করা।

Duplicate Records খুঁজতে Self Join-এর উদাহরণ

একই table-এর মধ্যে একই email থাকা students খুঁজতে Self Join ব্যবহার করা যেতে পারে।


SELECT 
    S1.Student_ID,
    S1.Student_Name,
    S1.Email
FROM Student AS S1
JOIN Student AS S2
ON S1.Email = S2.Email
AND S1.Student_ID <> S2.Student_ID;
            

এখানে একই email আছে কিন্তু Student_ID আলাদা — এমন records বের করা হয়েছে।

Self Join with INNER JOIN vs LEFT JOIN

Join Type Result Example Use
INNER JOIN শুধুমাত্র matching records দেখায় যেসব employee-এর manager আছে তাদের দেখানো
LEFT JOIN left table-এর সব records দেখায়, match না থাকলে NULL দেখায় CEO সহ সব employee দেখানো

Self Join-এর গুরুত্ব

  • একই table-এর rows-এর মধ্যে relationship খুঁজে বের করতে সাহায্য করে।
  • Hierarchy data যেমন employee-manager structure দেখাতে সাহায্য করে।
  • Parent-child relationship সহজে represent করা যায়।
  • Duplicate বা matching records খুঁজতে সাহায্য করে।
  • একই table-এর data compare করা যায়।
  • Complex reporting query তৈরি করতে সাহায্য করে।

Exam Writing Tips

  • প্রথমে Self Join-এর definition লিখবে।
  • লিখবে যে Self Join আলাদা কোনো join type নয়, একই table-কে নিজের সঙ্গে join করা হয়।
  • Alias ব্যবহারের কারণ ব্যাখ্যা করবে।
  • Employee-Manager example দিলে answer বেশি scoring হবে।
  • SQL query এবং output table অবশ্যই দেবে।
  • শেষে Self Join-এর প্রয়োজনীয়তা লিখবে।

উপসংহার

সুতরাং, Self Join হলো SQL-এর একটি গুরুত্বপূর্ণ technique, যেখানে একটি table-কে নিজের সঙ্গেই join করা হয়। এটি তখন ব্যবহার করা হয় যখন একই table-এর rows-এর মধ্যে relationship থাকে।

Employee-Manager relationship, parent-child category, duplicate checking এবং row comparison-এর মতো ক্ষেত্রে Self Join অত্যন্ত কার্যকর। Self Join করার সময় table aliases ব্যবহার করা খুব গুরুত্বপূর্ণ, কারণ একই table query-তে একাধিকবার ব্যবহৃত হয়।

Quick Revision Points

  • Self Join-এ একটি table নিজের সঙ্গেই join হয়।
  • Self Join আলাদা কোনো join type নয়।
  • Self Join করতে table alias ব্যবহার করা হয়।
  • Employee-Manager relationship Self Join-এর common example।
  • INNER JOIN ব্যবহার করলে only matching records আসে।
  • LEFT JOIN ব্যবহার করলে manager না থাকা employee-ও result-এ আসে।
  • Hierarchy এবং duplicate checking-এর জন্য Self Join দরকারি।