아래와 같은 검색어로 시작합니다. 핵심은 테이블 별칭을 사용하는 것이므로 같은 테이블을 여러 번 사용하여 조인 할 수 있습니다.
SELECT mgr.id AS manager_id,
mgr.employee_name AS manager_name,
mgr.hire_date AS manager_hire_date,
e1.id AS emp1_id,
e1.employee_name AS emp1_name,
e1.hire_date AS emp1_hire_date,
e2.id AS emp2_id,
e2.employee_name AS emp2_name,
e2.hire_date AS emp2_hire_date,
e3.id AS emp3_id,
e3.employee_name AS emp3_name,
e3.hire_date AS emp3_hire_date
FROM Employees mgr
INNER JOIN Emp_Managed em
ON em.mgr_id = mgr.id
LEFT OUTER JOIN Employees e1
ON e1.id = em.emp1
LEFT OUTER JOIN Employees e2
ON e2.id = em.emp2
LEFT OUTER JOIN Employees e3
ON e3.id = em.emp3
WHERE mgr.id = 1
직원이 LEFT OUTER JOIN을 사용하여 해당 필드를 null로 허용 한 경우를 선택했습니다.
반복 그룹이있어 Emp_Managed
에있는 스키마가 비정규 화되어 있으므로 쉽게 수행 할 수 있습니다. 일반적으로 이런 일은 재귀 쿼리를 필요로하는 계층 적 구조로 표현되지만 구조가 그렇게 비슷하지는 않습니다. 관리자, 관리자가 관리하는 모든 직원, 그리고 모든 직원이 해당 직원에 의해 관리되기를 원하는 상황이 발생하면 상당히 복잡해집니다.
샘플 데이터가 있습니까? 시도해 봤어? 오류가 있습니까? –
잘못된 데이터 디자인 – Paparazzi
[ask] 및 기타 [help] 링크를 읽고 약간의 작업을 보여주십시오. 또한 [mcve]. – philipxy