Запрос к идентификатору, ссылающийся на идентификатор для той же таблицы - PullRequest
0 голосов
/ 11 октября 2019

У меня есть таблица AMZ_EMPLOYEE_DETAILS с Employee Id, Employee Name и Supervisor1 и Supervisor 2. Супервайзеры являются работниками, но представлены своим именем. Моя задача состояла в том, чтобы заменить имена супервизоров их идентификаторами.

enter image description here

Я использовал следующий запрос для получения решения, но он использует подзапросы изапрос выглядит оптимизированным. Для этого я также сделал таблицу размеров со всеми Id и Employee Names, таблица AMZ_EMPLOYEE

SELECT S1.ID, S1.EMP_NAME, S1.SUPER_1_NEW, ZZ.ID AS SUPER_2_NEW
FROM 
(SELECT A.ID,A.EMP_NAME,A.SUPER_1,A.SUPER_2,Z.ID AS SUPER_1_NEW 
FROM AMZ_EMPLOYEE_DETAILS A
LEFT JOIN 
AMZ_EMPLOYEE Z
ON A.SUPER_1 = Z.EMP_NAME ) S1
LEFT JOIN 
AMZ_EMPLOYEE ZZ
ON S1.SUPER_2 = ZZ.EMP_NAME 
ORDER BY 1

Ниже приводится ожидаемый результат.

enter image description here

1 Ответ

2 голосов
/ 11 октября 2019

Логика использования двух self- LEFT JOIN верна. Вам не нужно использовать подзапросы, хотя. Рассмотрим:

SELECT a.id, a.emp_name, a1.id, a2.id
FROM amz_employee_details a
LEFT JOIN amz_employee a1 ON a1.emp_name = a.super_1
LEFT JOIN amz_employee a2 ON a2.emp_name = a.super_2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...