inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

문제와 풀이2

문제와 풀이2 1번문제

2

무깨

작성한 질문수 3

0

[질문 내용]
여기에 질문 내용을 남겨주세요.

저는 1번문제에서 FK -> PK 로풀었습니다 영한님은 PK -> FK 로 푸셨던것에 질문입니다.

FK -> PK는 항상 다대일으로 e.managed_id가 가리키는 PK 행은 0~1개라서 조인해도 왼쪽 테이블 행이 늘지 않아서 왼쪽 테이블이 행을 정하고, 조인은 컬럼만 붙인다고 생각했습니다.

PK -> FK는 일대로써 한 행이 여러 행으로 늘어나는데, 그럼 on 조건까지 다 읽어야 이해되지 않을까 해서 여쭤봅니다.

select
    e.employee_id,
    e.name,
    e.managed_id,
    m.name as manager_name
from
    employees e
join employees m on e.managed_id = m.employee_id
where
    m.name = '최과장';

sql mysql dbms/rdbms SQLD

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 무깨님!

질문하신 내용은 같은 employees 테이블을 두 번 조회하는 셀프 조인에서 FK → PK와 PK → FK 방향의 차이에 대한 내용입니다.

두 방식 모두 조인 조건이 동일하다면 같은 결과를 만들 수 있습니다.

  • e.managed_id = m.employee_id
    • 직원(e)의 관리자 ID인 FK로 관리자(m)의 PK를 찾는 방식입니다.
    • 일반적으로 직원 한 명은 관리자를 0명 또는 1명 가지므로, 직원 기준으로 보면 다대일 관계가 됩니다.
  • 반대로 관리자 기준에서 부하 직원을 찾으면, 관리자 한 명에게 여러 직원이 연결될 수 있으므로 일대다 형태가 됩니다.

따라서 무깨님이 작성하신 쿼리처럼 조회하려는 대상인 직원 테이블을 먼저 두고, FK를 통해 관리자 정보를 붙이는 방식도 올바릅니다. JOIN의 방향 자체가 결과의 정답을 결정하는 것은 아니며, 어떤 대상을 기준으로 조회하는지와 조인 조건을 어떻게 작성했는지가 중요합니다.

질문하신 내용과 동일하게, FK로 PK를 조인하는 방식과 PK에서 FK를 조인하는 방식의 차이를 설명한 기존 답변을 참고해 주세요.

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

추가로, 질문의 컬럼명이 실제 테이블에서 manager_id라면 쿼리에서도 e.manager_id처럼 동일하게 맞춰주시면 됩니다. managed_id가 실제 컬럼명이라면 현재 쿼리 그대로 사용하면 됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

조인의 특징

0

48

2

76강 2분33초 내용 오류

0

62

2

기본편 오타 제보 드립니다.

0

64

2

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

0

61

1

문제 풀이 1번 질문

0

60

1

간단한 오타 제보입니다.

0

91

1

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

0

118

1

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

0

102

1

where 대신 having을 써도 되나요?

1

135

1

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

0

113

2

in 수행

0

82

1

외부조인1 강의 관련 질문

0

126

3

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

0

112

1

오타인거죠?

0

116

1

섹션 3 퀴즈 3번 문제

0

129

2

GROUP BY 기준 컬럼

0

111

1

질문이 있습니다

0

85

1

오타

0

114

2

실제 상용 서비스 질문

0

125

1

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

0

87

1

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

0

100

1

9. 인덱스2.pdf 중에서

0

109

1

문제 2번

0

106

2

문제와 풀이1 - 3번 문제

0

112

2