레이블이 #SQL조인 #셀프조인 #SelfJoin #SQL #SQL강의 #SQL교육 #SQL강좌인 게시물을 표시합니다. 모든 게시물 표시
레이블이 #SQL조인 #셀프조인 #SelfJoin #SQL #SQL강의 #SQL교육 #SQL강좌인 게시물을 표시합니다. 모든 게시물 표시

2021년 11월 14일 일요일

오라클 셀프조인(Oracle Self Join)

 오라클 셀프조인(Oracle Self Join)

이름그대로 자기자신 테이블과 조인을 하는 것을 말합니다. 원래 조인이 둘이상의 테이블에 대해 연관된 행들을 조인 컬럼을 기준으로 비교하여 새로운 행 집합을 만드는 것인데 연관된 테이블이 같은 테이블인 경우를 셀프조인(Self Join) 이라고 합니다. 셀프조인 역시 내부조인(Inner Join)의 한 종류 입니다.

한 개의 테이블을 두 개의 별도의 테이블처럼 이용하여 서로 조인 하는 형태인데 원하는 데이터들이 한 테이블에 있는 경우, 테이블의 각행이 다른 행의 값과 결합되어 있는 경우에 사용하며 같은 테이블을 두번 사용하므로 테이블 별칭을 반드시 사용해야 하는 조인 입니다.

한 테이블의 외래키 컬럼이 자기 자신테이블의 주키(Primary Key)를 참조하는 경우 이용하게 되는데, 사원(EMP) 테이블에서 MGR 컬럼은 관리자 컬럼이고 외래키(Foreign Key)로써 관리자도 사원이므로 자기자신 테이블 EMP의 사번(EMPNO, Primary Key) 컬럼을 참조 합니다.

EMP 테이블에서 사원 이름과, 관리자 이름을 같이 출력하는 경우 MGR 컬럼 값을 자기 자신 테이블의 사번(empno)과 조인을 해야 이름을 알수 있습니다. 이와같이 보통 한 행(ROW)에 두개의 레코드 정보를 보여 주고자 할 때 유용합니다.

EMP 테이블에서 사번, 이름, 관리자 이름을 출력합니다. 관리자도 사원으로 EMP 테이블에 존재하여 사번(empno)를 가집니다. (KING 사원은 최고관리자로 mgr 컬럼이 NULL 이므로 조인 조건에 맞지 않아 출력되지 않습니다. 이러한 값도 출력을 원한다면 뒤에서 배우는 Outer Join을 사용해야 합니다.)

SELECT 사원.empno

, 사원.ename

, 관리자.ename

FROM emp "사원", emp "관리자"

WHERE 사원.mgr = 관리자.empno

SELECT 사원.empno

, 사원.ename

, 관리자.ename

FROM emp "사원" INNER JOIN emp "관리자"

ON 사원.mgr = 관리자.empno

<실행결과>

empno

ename

ename_1

7902

FORD

JONES

7788

SCOTT

JONES

7844

TURNER

BLAKE

7499

ALLEN

BLAKE

7521

WARD

BLAKE

7900

JAMES

BLAKE

7654

MARTIN

BLAKE

7934

MILLER

CLARK

7876

ADAMS

SCOTT

7698

BLAKE

KING

7566

JONES

KING

7782

CLARK

KING

7369

SMITH

FORD

2021년 10월 31일 일요일

오라클 SQL, 셀프조인(Self Join), SQL조인

 

오라클 SQL, 셀프조인(Self Join), SQL조인

이름그대로 자기자신 테이블과 조인을 하는 것을 말합니다. 원래 조인이 둘이상의  테이블에 대해 연관된 행들을 조인 컬럼을 기준으로 비교하여 새로운 행 집합을 만드는 것인데 연관된 테이블이 같은 테이블인 경우를 셀프조인(Self Join) 이라고 합니다. 셀프조인 역시 내부조인(Inner Join)의 한 종류 입니다. 

한 개의 테이블을 두 개의 별도의 테이블처럼 이용하여 서로 조인 하는 형태인데 원하는 데이터들이 한 테이블에 있는 경우, 테이블의 각행이 다른 행의 값과 결합되어 있는 경우에 사용하며 같은 테이블을 두번 사용하므로 테이블 별칭을 반드시 사용해야 하는 조인 입니다. 

한 테이블의 외래키 컬럼이 자기 자신테이블의 주키(Primary Key)를 참조하는 경우 이용하게 되는데,  사원(EMP) 테이블에서 MGR 컬럼은 관리자 컬럼이고 외래키(Foreign Key)로써 관리자도 사원이므로 자기자신 테이블 EMP의 사번(EMPNO, Primary Key) 컬럼을 참조 합니다.  

EMP 테이블에서 사원 이름과, 관리자 이름을 같이 출력하는 경우 MGR 컬럼 값을 자기 자신 테이블의 사번(empno)과 조인을 해야 이름을 알수 있습니다. 이와같이 보통 한 행(ROW)에 두개의 레코드 정보를 보여 주고자 할 때 유용합니다.  

EMP 테이블에서 사번, 이름, 관리자 이름을 출력합니다. 관리자도 사원으로 EMP 테이블에 존재하여 사번(empno)를 가집니다. (KING 사원은 최고관리자로 mgr 컬럼이 NULL 이므로 조인 조건에 맞지 않아 출력되지 않습니다. 이러한 값도 출력을 원한다면 뒤에서 배우는 Outer Join을 사용해야 합니다.)


SELECT 사원.empno

             , 사원.ename

             , 관리자.ename

FROM     emp "사원", emp "관리자"

WHERE 사원.mgr = 관리자.empno


SELECT 사원.empno

         , 사원.ename

         , 관리자.ename

FROM   emp "사원" INNER JOIN emp "관리자"

ON      사원.mgr = 관리자.empno


<실행결과>

empno

ename

ename_1

7902

FORD

JONES

7788

SCOTT

JONES

7844

TURNER

BLAKE

7499

ALLEN

BLAKE

7521

WARD

BLAKE

7900

JAMES

BLAKE

7654

MARTIN

BLAKE

7934

MILLER

CLARK

7876

ADAMS

SCOTT

7698

BLAKE

KING

7566

JONES

KING

7782

CLARK

KING

7369

SMITH

FORD

 

#SQL조인 #셀프조인 #SelfJoin #SQL #SQL강의 #SQL교육 #SQL강좌
 

 

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...