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 -- 관리자 번호와 사번이 일치하는 경우