1 minute read

  • 동일 테이블 사이의 조인, FROM절에 동일 테이블이 두번 이상 나타난다.
  • 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 반트시 테이블 별칭(ALIAS)를 사용해야 한다.

[예제]

SELECT E1.사원, E1.관리자, E2.관리자 차상위관리자
FROM 사원 E1, 사원 E2
WHERE E1.관리자 = E2.사원
ORDER BY E1.사원;
사원 관리자 차상위관리자
B A  
C A  
D C A
E C A


=>결과에서 A사원(사장)에 대한 정보는 누락되었다.
내부 조인을 사용할 경우 자신의 관리자가 존재하질 경우 누락되기 때문이다. 따라서 이런경우를 방지하기 위해서 아우터 조인을 사용해야 한다.

[예제] : 아우터 조인을 사용해 관리자가 존재하지 않는 데이터 까지 결과에 표시해본다.

SELECT E1.사원, E1.관리자, E2.관리자 차상위관리자
FROM 사원 E1 LEFT OUTER JOIN 사원 E2
ON (E1.관리자 = E2.사원)
ORDER BY E1.사원;
사원 관리자 차상위관리자
A    
B A  
C A  
D C A
E C A

과제 풀이 : 7주차 과제



7-5 : 셀프 조인을 수행하는 SQL문을 한글 질의문과 함께 작성하라. [2점]

한글 질의문 : 사원과 사원의 관리자, 관리자의 관리자(차 상위관리자)를 출력하라.

SQL문
SELECT e1.empno 사원번호, e1.MGR 관리자번호, E2.MGR 차상위관리자번호 FROM EMP E1, EMP E2 WHERE E1.MGR = e2.empno ORDER BY e1.empno;


7-6 : [과제7-6]에서 만든 질의문을 최상위 레벨도 출력되도록 변경하라. [2점]

SQL문
SELECT e1.empno 사원번호, e1.MGR 관리자번호, E2.MGR 차상위관리자번호 FROM EMP E1 LEFT JOIN EMP E2 ON (E1.MGR = e2.empno) ORDER BY e1.empno;