The aim of this pageπ is to explain self-joins in SQL and how they can be used effectively.
- Definition: A self-join is a regular join but the table is joined with itself.
- Purpose: It is used to compare rows within the same table or to create a hierarchical structure.
-
Example Table: A
healthcare_providerstable with columnsname,id, andsupervisor_id. - Basic SQL Query:
SELECT *
FROM healthcare_providers;
- Data Representation: Example data:
βββββββββββ³βββββ³ββββββββββββββββ
β name β id β supervisor_id β
β‘βββββββββββββββββββββββββββββββ©
β Alice β 2 β 1 β
β Bob β 3 β 1 β
β Carol β 4 β 5 β
β David β 5 β NULL β
β Eve β 1 β 5 β
βββββββββββ΄βββββ΄ββββββββββββββββ
- Self-Join Query:
SELECT
e.name AS employee,
s.name AS reports_to
FROM healthcare_providers e
LEFT JOIN healthcare_providers s ON e.supervisor_id = s.id
ORDER BY s.name NULLS LAST;
-
Explanation:
-
Aliases:
erepresents employees,srepresents supervisors. - LEFT JOIN: Ensures all employees are listed, even if they don't have supervisors.
-
ON Clause: Links
supervisor_idfrometoidins. - SELECT Clause: Retrieves employee names and their respective supervisor names.
- ORDER BY: Sorts the result by supervisor names, keeping null values at the end.
-
Aliases:
- Result:
| employee | reports_to |
|----------|------------|
| Alice | Eve |
| Bob | Eve |
| Carol | David |
| Eve | David |
| David | NULL |
Top comments (0)