SELF JOIN
SELF JOIN 이라는 기능은 존재하지 않는다.
하지만 INNER JOIN 으로 활용 하는 개념이란 것 만 숙지한다.
테이블 값을 참조하여, 내 테이블의 다른 열의 정보를 출력 할때.
(EXCEL의 VLOOKUP, HLOOKUP, XLOOKUP 비슷한 개념이라 생각하니 이해했다.)
CREATE TABLE EMPTBL (EMP CHAR(3), MANAGER CHAR(3), EMPTEL VARCHAR(8));
INSERT INTO EMPTBL VALUES('나사장', NULL, '0000');
INSERT INTO EMPTBL VALUES('김재무', '나사장', '2222');
INSERT INTO EMPTBL VALUES('김부장', '김재무', '2222-1');
INSERT INTO EMPTBL VALUES('이부장', '김재무', '2222-2');
INSERT INTO EMPTBL VALUES('우대리', '이부장', '2222-2-1');
INSERT INTO EMPTBL VALUES('지사원', '이부장', '2222-2-2');
INSERT INTO EMPTBL VALUES('이영업', '나사장', '1111');
INSERT INTO EMPTBL VALUES('한과장', '이영업', '1111-1');
INSERT INTO EMPTBL VALUES('최정보', '나사장', '3333');
INSERT INTO EMPTBL VALUES('윤차장', '최정보', '3333-1');
INSERT INTO EMPTBL VALUES('이주임', '윤차장', '3333-1-1');
이런식으로 테이블을 생성했을 때
우대리의 상사, 이부장, 2222-2-1 이 아닌
상사인 이부장의 전화번호를 출력하고 싶을때,
SELECT E.EMP, E.MANAGER, EMPTBL.EMPTEL AS '직속상관 연락처'
FROM EMPTBL E
INNER JOIN EMPTBL
ON E.MANAGER = EMPTBL.EMP
-- 직속상관 연락처 표시.
이런식으로 하면 직속 상관의 연락처가 표시된다.
SELECT E.EMP, E.MANAGER, EMPTBL.EMPTEL AS '직속상관 연락처'
FROM EMPTBL E
INNER JOIN EMPTBL
ON E.MANAGER = EMPTBL.EMP
WHERE E.EMP = '우대리';
-- 우대리와 직속상관의 연락처
우대리만 나오게 조건을 추가했다.
출력결과다.
'DB' 카테고리의 다른 글
MYSQL - UNION, UNION ALL, NOT IN, IN (0) | 2023.06.21 |
---|---|
MySQL - CRUD, TRIGGER (0) | 2023.06.21 |