Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 에러
- 서블릿
- VisualStudioCode
- datatype
- 오라클
- CSS
- 오류
- function
- 삐옥
- From
- 이클립스
- 변수
- select
- variable
- Java
- HTML
- 자료형
- Eclipse
- sqldeveloper
- Servlet
- Operator
- SQL
- 개발자
- 자바
- error
- 코딩
- oracle
- 오라클오류
- JS
- 연산자
Archives
- Today
- Total
뇨내
[Oracle-SQL Developer] Hierarchical Query 계층형 쿼리 본문
Oracle/Union + Hierarchical + Modeling
[Oracle-SQL Developer] Hierarchical Query 계층형 쿼리
삐옥 2021. 12. 26. 18:16
Hierarchical Query 계층형 쿼리
- START WITH절 + CONNECT BY 절
- 계층형 쿼리에서만 제공하는 의사 컬럼 사용
a. prior : 부모 레코드
b. level : depth
- 레코드간의 관계가 서로 상하 수직 구조일 경우 사용 > 그 구조를 결과셋 반영
- 자기 참조를 테이블에서 사용한다.(ex. 셀프 조인)
- 오라클 전용 쿼리
- 카테고리, 답변형 게시판, 조직도, BOM등에 사용
실 습
컴퓨터 계층형 쿼리 만들기
컴퓨터
- 본체
- 메인보드
- 그래픽카드
- 랜카드
- CPU
- 메모리
- 모니터
- 보호필름
- 모니터암
- 프린터
- A4용지
- 잉크카트리지
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
32
33
34
35
36
37
38
39
|
|
create table tblComputer
(
seq number primary key, -- 식별자(PK)
name varchar2(50) not null, -- 부품명
qty number not null, -- 수량
pseq number null references tblComputer(seq) -- 부모부품(FK)
);
insert into tblComputer values (1, '컴퓨터', 1, null);
insert into tblComputer values (2, '본체', 1, 1);
insert into tblComputer values (3, '메인보드', 1, 2);
insert into tblComputer values (4, '그래픽카드', 1, 2);
insert into tblComputer values (5, '랜카드', 1, 2);
insert into tblComputer values (6, 'CPU', 1, 2);
insert into tblComputer values (7, '메모리', 2, 2);
insert into tblComputer values (8, '모니터', 1, 1);
insert into tblComputer values (9, '보호필름', 1, 8);
insert into tblComputer values (10, '모니터암', 1, 8);
insert into tblComputer values (11, '프린터', 1, 1);
insert into tblComputer values (12, 'A4용지', 100, 11);
insert into tblComputer values (13, '잉크카트리지', 3, 11);
-------------------------------------------------------------------
select
seq as "번호",
lpad(' ', (level-1) * 5) || name as "부품명",
prior name as "부모부품명",
level
from tblComputer c
--start with seq = 1 -- 루트 요소 지정 (숫자 바꿔서 결과 보기)
--start with seq = (select seq from tblComputer where name = '컴퓨터') -- 최상위 루트 찾는 방법 1
start with pseq is null -- 최상위 루트 찾는 방법 2
connect by prior seq = pseq; -- 부모와 자식을 연결짓는 조건
|
cs |
- 결과
'Oracle > Union + Hierarchical + Modeling' 카테고리의 다른 글
[Oracle-SQL Developer] Union (0) | 2021.12.13 |
---|
Comments