У меня есть три таблицы:
POST
: информация о должности
POST_ID | REPORTS_TO
--------+-----------
1 | 4
2 | 1
3 | 1
4 | NULL
EMPLOYEE
: запись о том, кто находится в какой пост
EMPLOYEE_ID | POST_ID | PERSON_ID
------------+---------+----------
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
4 | 4 | 4
PERSON
: информация о человеке
PERSON_ID | NAME
----------+-----
1 | BOB
2 | JIM
3 | FRANK
7 | PHIL
Я хочу вернуть результаты в виде:
WorkerName | SupervisorName
-----------+---------------
BOB | PHIL
JIM | BOB
FRANK | BOB
PHIL | (NULL)
Я пробовал это, но он просто возвращает 7 строк. Мне нужно объединить результаты ниже, сгруппированные по postID
, но тогда я потеряю половину значений:
SELECT First_Name
FROM post
JOIN employee
ON employee.PostID = post.Supervisor_PostID
OR employee.PostID = post.PostID
JOIN person
ON person.PersonID = employee.PersonID