MarmellataDev
article thumbnail
Published 2023. 6. 21. 09:01
MYSQL - SELF JOIN, INNER JOIN DB

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
profile

MarmellataDev

@Marmellata

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!