SQL Запрос и возврат двух строк в один - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть три таблицы:

  • 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

1 Ответ

0 голосов
/ 07 февраля 2020

Вам необходимо присоединиться к таблице person дважды с post s: один раз для рабочего (к которому вы получаете доступ через таблицу моста employee), другой для супервизора:

select pe1.name WorkerName, pe2.name SupervisorName
from post po
inner join employee em on em.post_id = po.post_id
inner join person pe1 on pe1.person_id = em.person_id
inner join person pe2 on pe2.person_id = po.reports_to
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...