해결된 질문
작성
·
36
0
ON Employee.managerid = Manager.id
이 부분이 이해가 제대로 안됩니다..!!
Employee.id = Manager.managerid
이렇게 작성하면 안되는 이유는 뭔가요??
답변 2
0
Employee 테이블에는 모든 직원의 정보가 들어있습니다.
매니저도 직원이니 이 테이블에 매니저의 정보도 있어요.
이 정보(컬럼)들 중에 id는 해당 직원의 고유 id이고, managerid는 이 직원의 매니저의 id입니다.
그러니까 managerid에 있는 숫자는 다른 행의 id로 존재하는 것입니다.
문제에서 직원의 정보와, 이 직원의 매니저의 정보를 함께 조회하기를 요구합니다.
Employee 테이블은 하나지만, 두 개의 이름(하나는 Employee라는 이름을 그대로 쓴 것, 하나는 Manager라는 새로운 이름을 쓴 것)을 각각 붙여 두 개의 테이블인 것처럼 서로 조인을 합니다.
Employee에서 직원의 정보를, Manager에서 매니저의 정보를 가져오기 위해서는 조인 키는 Employee.managerid = Manager.id 가 되어야 합니다.
만약 질문하신 것처럼 Employee.id = Manager.managerid 로 쓴다면 반대로 Manager에서 직원의 정보를, Employee에서 매니저의 정보를 가져올 수 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 가십걸님.
Self Join에 대한 궁금증을 가지셨군요. Self Join은 같은 테이블 내에서 두 개의 역할을 수행하도록 테이블을 두 번 참조하여 데이터를 조인하는 방식입니다. 서로 다른 두 역할의 데이터를 연결하고자 할 때 자주 사용됩니다.
먼저, ON Employee.managerid = Manager.id
라는 조건을 사용하신 부분은 Self Join의 전형적인 패턴입니다. 여기서 Employee
와 Manager
는 사실상 같은 테이블을 두 번 참조하여 각각 다른 역할을 수행하게 됩니다.
잠재적으로 잘못된 이해는 [Employee.id] = Manager.managerid
라는 조건에서 발생합니다. 이 조건은 일반적으로 사용하지 않습니다. 왜냐하면 보통 관리자(manager)는 직원(employee)을 감독하게 되므로, 직원의 관리자가 무엇인지 식별하기 위해 managerid
가 사용됩니다. Manager.id
는 특정 관리자의 고유 식별자이고, Employee.managerid
는 이 관리자를 가리키는 외래키 역할을 합니다.
관련하여 유사한 질문을 다룬 게시물에서 자세한 설명을 확인하실 수 있습니다:
이 링크에서 Self Join에 대해 더 깊이 이해하실 수 있을 것입니다. Self Join이 동일한 테이블 안에서 데이터의 관계를 어떻게 사용할 수 있게 하는지에 대한 포인트를 잘 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.