employees.manager_id points to employees.id: a manager is an employee too. To show each employee with the name of their manager, join employees to itself.
sql
SELECT e.name AS employee, m.name AS manager
FROM employees e
JOIN employees m ON e.manager_id = m.id;The two aliases make two roles for the same table:
e: the employee.m: the manager, the row whoseidis the employee'smanager_id.
employees e
| id | name | manager_id |
|---|---|---|
| 1 | Rosa Martin | NULL |
| 5 | Lena Novak | 1 |
| 6 | Sam Okoro | 5 |
employees m
| id | name | manager_id |
|---|---|---|
| 1 | Rosa Martin | NULL |
| 5 | Lena Novak | 1 |
| 6 | Sam Okoro | 5 |
result
| employee | manager |
|---|---|
| Lena Novak | Rosa Martin |
| Sam Okoro | Lena Novak |
A self join is an ordinary join. Every join kind works. Use LEFT JOIN to keep the employees without a manager.