Вы можете попробовать это:
SELECT e.firstName, e.lastName, b.firstName, b.lastName
FROM employees as e
LEFT JOIN employees as b on b.employeeNumber = e.reportsTo;
- Вы выбираете firtName и lastName каждого сотрудника
- Вы выбираете firstName и lastName своего начальника
- Используя левуюобъединение должно возвращать некоторое значение NULL для босса, который никому не сообщает
- Я сделал объединение на
b.employeeNumber = e.reportsTo
, поэтому вы получите информацию о боссе из employeeNumber, куда направляется отчет сотрудника (например, сотрудник 1056 сообщает сотруднику 1002Таким образом, данные о сотрудниках - это Паттерсон Мэри, и он сообщает сотруднику Мерфи Диане, ее боссу)
РЕДАКТИРОВАТЬ:
После прочтения ответа Хамзы Хайдера о SELF JOIN
(название того, что я делал ранее с объединением в той же таблице). Я нахожу другой вопрос, где ответ выглядит так, как вы хотите, и он даст вам некоторую информацию, чтобы понять, как работает SELF JOIN
: Что такое SELFПРИСОЕДИНЯЙТЕСЬ, и когда бы вы использовали его?
Согласно ответу, есть другое решение:
SELECT
e1.FirstName,
e1.LastName,
e2.FirstName as SupervisorFirstName,
e2.LastName as SupervisorLastName
FROM employee e1
LEFT OUTER JOIN employee e2 on e2.employeeNumber = e1.reportsTo
Разница в LEFT OUTER JOIN
, а не LEFT JOIN
, ноониОба они одинаковы ( Являются ли левые внешние соединения и левые соединения одинаковыми? )