Почему этот sql select выбирает все 3 раза - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть домашнее задание, в котором мне нужно отобразить каждого сотрудника вместе с идентификатором его менеджера (на нем также должны отображаться сотрудники без менеджера). Все они находятся в одной таблице с именами сотрудников. Однако, когда я запускаю эту команду:

select first_name, last_name, manager_id
from employees
connect by prior employee_id = manager_id;

, я получаю 269 строк, что не имеет смысла для меня, так как там всего 93 сотрудника.

Я пытался использовать функцию выбора, которая мне подходит, но я хочу знать, почему это отображает 269 строк. Кроме того, возможно ли как-то сделать это через рекурсивное соединение?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Я думаю, вам нужно использовать LEFT JOIN следующим образом:

SELECT
    EMP.*, MGR.*
FROM
    EMPLOYEES EMP
    LEFT JOIN EMPLOYEES MGR
    ON MGR.EMPLOYEE_ID = EMP.MANAGER_ID;
0 голосов
/ 02 апреля 2020

Если вам просто нужен идентификатор менеджера, он указан в таблице.

Я полагаю, вам нужна дополнительная информация о менеджере. Если это так, вы хотите left join:

select e.*, em.*
from employees e left join
     employees em
     on em.employee_id = m.manager_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...