inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

셀프 조인

셀프조인 상사 출력

해결된 질문

99

index

작성한 질문수 10

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로 검색해보시면 원하시는 문제를 해결하실 수 있을거에요 🙂

감사합니다.

간단한 오타 제보입니다.

0

21

1

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

0

64

1

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

0

61

1

where 대신 having을 써도 되나요?

0

85

1

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

0

67

2

in 수행

0

46

1

외부조인1 강의 관련 질문

0

77

3

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

0

73

1

오타인거죠?

0

82

1

섹션 3 퀴즈 3번 문제

0

79

2

GROUP BY 기준 컬럼

0

89

1

질문이 있습니다

0

58

1

오타

0

84

2

실제 상용 서비스 질문

0

101

1

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

0

63

1

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

0

68

1

9. 인덱스2.pdf 중에서

0

82

1

문제 2번

0

69

2

문제와 풀이1 - 3번 문제

-1

73

2

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

0

97

1

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

0

98

2

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

0

62

1

파일을 만드는 단위가 궁금해요

0

76

1

MySQL은 실무에서 사용하는 케이스도 있을까요?

0

87

1