inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 기본편

셀프 조인

셀프조인 상사 출력

해결된 질문

100

index

작성한 질문수 11

0

employee_id와 manager_id를 사용해서 셀프조인 하는 과정에서

자신의 상사를 모두 표시하고 싶다는 생각이 들었습니다.

 

SELECT
    a.employee_id, a.name,
    b.employee_id, b.name,
    c.employee_id, c.name,
    d.employee_id, d.name,
    e.employee_id, e.name
FROM
    employees a 
    left join employees b on a.manager_id = b.employee_id
    left join employees c on b.manager_id = c.employee_id
    left join employees d on c.manager_id = d.employee_id
    left join employees e on d.manager_id = e.employee_id

 

image.png

 

이와같이 직원 코드가 있고 상사 코드가 있는 경우 자기로부터 가장 높은 상사까지 한 행에 다 출력하고 싶은 경우에는 어떤 방법이 최선인지 알고 싶습니다.

지금은 단순히 데이터 개수가 적기 때문에 몇번의 조인으로 해결되었지만 실무에서 데이터 개수가 많다고 할때 이와같이 구하려면 어떻게 구해야하는지 궁금합니다.

 

즉 위 코드처럼 여러번 조인을 쓰는게 아니라 원하는 결과를 얻을 때 까지 자동으로 반복시킬 방법이 있는지 궁금합니다.

sql mysql dbms/rdbms SQLD

답변 1

1

김영한

안녕하세요. index님

이 문제를 해결하려면 재귀 CTE라는 방법을 사용해야 합니다.

재귀 CTE로 검색해보시면 원하시는 문제를 해결하실 수 있을거에요 🙂

감사합니다.

드랍 테이블로 지운 ordes에 대해서 질문

0

26

1

문제 풀이 1번 질문

0

30

1

간단한 오타 제보입니다.

0

69

1

ON을 명시하지 않았을 경우 질문드립니다.

0

87

1

강의 2:53 union을썼는데도 션이 중복

0

79

1

where 대신 having을 써도 되나요?

0

107

1

주문 내역에 대한 고객 데이터

0

88

2

in 수행

0

61

1

외부조인1 강의 관련 질문

0

87

3

커버링 인덱스와 랜덤i/o 질문

0

82

1

오타인거죠?

0

92

1

섹션 3 퀴즈 3번 문제

0

89

2

GROUP BY 기준 컬럼

0

97

1

질문이 있습니다

0

65

1

오타

0

90

2

실제 상용 서비스 질문

0

110

1

파티셔닝 관련 질문입니다.

0

70

1

join 문제 풀이2 문제1(self join) 질문

0

78

1

9. 인덱스2.pdf 중에서

0

91

1

문제 2번

0

82

2

문제와 풀이1 - 3번 문제

-1

85

2

잘 사용하진 않지만 풀 외부 조인을 사용하신 사례가 궁금합니다!

0

106

1

[58. 인덱스와 정렬]을 듣다가 질문입니다.

0

109

2

두개 이상의 테이블을 조인할때 인덱스 질문이 있습니다.

0

76

1