SQL
SQL_SELF JOIN: 동일테이블 사이의 조인
S_pot
2021. 6. 1. 16:28
USE sqlDB;
CREATE TABLE smartTbl (
num int, -- 사원번호
emp NCHAR(3),
manager int, -- 관리자의 사원번호
department NCHAR(3)
);
INSERT INTO smartTbl VALUES(1,'나사장',NULL, NULL);
INSERT INTO smartTbl VALUES(2,'김재무',1, '재무부');
INSERT INTO smartTbl VALUES(3,'김부장',2, '재무부');
INSERT INTO smartTbl VALUES(4,'이부장',2, '재무부');
INSERT INTO smartTbl VALUES(5,'우대리',4, '재무부');
INSERT INTO smartTbl VALUES(6,'지사원',4, '재무부');
INSERT INTO smartTbl VALUES(7,'이영업',1, '영업부');
INSERT INTO smartTbl VALUES(8,'한과장',7, '영업부');
INSERT INTO smartTbl VALUES(9,'최정보',1, '정보부');
INSERT INTO smartTbl VALUES(10,'윤차장',9, '정보부');
INSERT INTO smartTbl VALUES(11,'이주임',10, '정보부');
SELECT * FROM smartTbl;
-- 관리자 번호를 관리자이름으로 대체
-- OUTER JOIN
SELECT A.emp AS [이름] , B.emp AS [관리자], B.department AS [관리자부서]
FROM smartTbl A
-- INNER JOIN smartTbl B
LEFT OUTER JOIN smartTbl B
ON A.manager = B.num -- 관리자 번호와 사번이 일치하는 경우
-- INNER JOIN
SELECT A.emp AS [이름] , B.emp AS [관리자], B.department AS [관리자부서]
FROM smartTbl A
INNER JOIN smartTbl B
-- LEFT OUTER JOIN smartTbl B
ON A.manager = B.num -- 관리자 번호와 사번이 일치하는 경우