티스토리 뷰

SQL

조인에 대해 알아보자 3편 (feat. SELF JOIN)

인공지능끙정 2023. 2. 8. 23:58
반응형

안녕하세요, 끙정입니다.

 

오늘은 조인의 마지막으로 간단하게 SELF JOIN에 대해서 알아보겠습니다.

SELF JOIN은 조인 테이블이 자기 자신입니다.

특별한 문법이 없고 내부 조인 문법을 사용합니다.

 

한 테이블을 조인하는 것이 의미가 있으려면 테이블 내의 필드끼리 참조 관계여야 합니다.

즉, 한 필드가 다른 필드를 참조하는 1:n 의 자기 참조 관계가 있는 특수한 테이블에만 사용할 수 있습니다.

 

다음 테이블을 예시로 보겠습니다.

 

/* 실습용 테이블을 만들어봅니다. */
CREATE TABLE tDirectory
(
	id INT PRIMARY KEY,
	name VARCHAR(20) NOT NULL,
	parent INT NOT NULL
);

INSERT INTO tDirectory (id, name, parent) VALUES (1, 'Root', 0);
INSERT INTO tDirectory (id, name, parent) VALUES (2, 'Data', 1);
INSERT INTO tDirectory (id, name, parent) VALUES (3, 'Program', 1);
INSERT INTO tDirectory (id, name, parent) VALUES (4, 'Sound', 2);
INSERT INTO tDirectory (id, name, parent) VALUES (5, 'Picture', 2);
INSERT INTO tDirectory (id, name, parent) VALUES (6, 'Game', 3);
INSERT INTO tDirectory (id, name, parent) VALUES (7, 'StarCraft', 6);

 

이런 테이블이 나옵니다.

 

id는 디렉터리의 고유 번호이고 name은 디렉터리의 이름입니다.

parent는 부모 필드가 누구인가를 가리키며 0일 경우 루트입니다.

이 테이블에서 id와 parent는 둘 다 디렉터리 번호이되 parent가 id를 참조합니다.

 

셀프 조인을 통해 자신의 부모 디렉터리가 무엇인지 출력해보겠습니다.

 

SELECT A.name 부모, B.name 자식 FROM tDirectory A
INNER JOIN tDirectory B ON A.id = B.parent; /* A의 id와 B의 parent를 일치시킨다. */

 

크로스 조인을 통해서 내부 구조를 살펴보면 이해가 더 빠릅니다.

 

SELECT A.name 부모, A.id, B.name 자식, B.parent FROM tDirectory A
CROSS JOIN tDirectory B;

 

7 X 7 의 논리곱이 출력된다.

 

이러한 CROSS JOIN문에서 id와 parent가 일치하는 행만 출력하는 것입니다.

 

 

그만 알아보겠습니다.

 

 

출처

http://www.yes24.com/Product/Goods/101637633

 

김상형의 SQL 정복 : 소문난 명강의 (무료특별판) - YES24

DBMS에 제약 없이 SQL을 활용한다!핵심 원리를 알려주는 SQL 바이블 DBMS 제품이나 개발툴이 아닌 SQL 언어 그 자체를 배우는 바이블 도서다. 특정 DBMS에 종속적인 사용법보다는 표준화된 데이터 관리

www.yes24.com

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함