오라클 공부를 하고 있는데
아래와 같은 문제가 있었습니다.
문제) 인사정보테이블과, 조직테이블이 있다.
이때 각 사원별 조직장의 정보를 출력하라.
[인사정보 - 사원코드, 사원이름, 조직코드 등...]
[조직 - 조직코드, 조직명, 조직장번호 등...]
그리고 저는 이문제의 답을
SELECT A1.사원코드, A1.사원이름, B,조직코드, B.조직장번호 FROM 인사정보 A1, 조직정보 B WHERE A1.조직코드 = B.조직코드
SELECT A1.사원코드, A1.사원이름, B,조직코드, B.조직장번호 FROM 인사정보 A1, 인사정보 A2, 조직정보 B WHERE A1.조직코드 = B.조직코드 AND B.조직장번호 = A2.사원코드;
이거 였으며, 저에게는 아직도 생소한 같은테이블을 두개로 나누어 FROM한 것입니다...
찾아보니 셀프조인이라는 개념이 나와 검색해보고는 있는데
자기 자신끼리 WHERE절을 만든경우뿐이 없어 이문제의 이해는 아직도 가질 않는 상황입니다..ㅠㅠ
정답쿼리에 조직장이름이 빠져 있네요.
조직장 번호는 키 역활로써는 중요한 것이지만 정작 보여줄 때는 의미 없는 값이죠.
출력할때는 이름을 보여 줘야 합니다.
사원테이블의 조직코드를 이용해 조직테이블과 조인하는 거구요
조직테이블의 조직장 사번을 이용해 조직장 이름을 가져오기 위해 사원정보와 다시 조인하는 것입니다.
- A1 은 사원의 정보를 가져오기 위한 것이고
- B 는 조직의 정보를 가져오기 위한 것이고
- A2 는 조직장의 정보를 가져오기 위한 것이죠.
SELECT A1.사원코드 , A1.사원이름 , A1,조직코드 , B,조직명 , B.조직장번호 , A2.사원이름 AS 조직장이름 FROM 인사정보 A1 , 인사정보 A2 , 조직정보 B WHERE A1.조직코드 = B.조직코드 AND B.조직장번호 = A2.사원코드 ;