프로젝트 진행중 유사 테이블 작성이 많아짐에 따라 다음의 쿼리를 생성했다.
재귀 호출 유형의 테이블 작성후 데이타 쿼리시, 트리 형태의 데이타 구조 쿼리에 대해 알아본다.
일명, 재귀 순환 호출 쿼리!!
간단하게 테이블 구조는 아래와 같다.
- 테이블
create table CATEGORY
(
CATEGORY_SRL NUMBER(10) not null,
SUP_CATEGORY_SRL NUMBER(10),
CATEGORY_NAME VARCHAR2(30) not null
)
tablespace PROJECT_
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
);
위 테이블은 일련번호의 고유번호와 부모 일련번호를 가르키는 코드 그리고 해당 카테고리에 대한 이름으로 구성된 테이블이다.
고유번호와 부모키를 가지고 단계뿐 아니라 그룹을 함께 구해보자.
-재귀 순환 호출 쿼리
SELECT
ROWNUM no_,
LPAD(' ',(LEVEL-1)*4)||category_srl AS category_code,
LEVEL,
category_name,
sup_category_srl AS sup_category_code,
DECODE(LEVEL,1, category_srl,
2, sup_category_srl,
3, PRIOR sup_category_srl) AS group_code
FROM g
category
START WITH
sup_category_srl IS NULL
CONNECT BY PRIOR
category_srl = sup_category_srl
ORDER BY
group_code ASC
재귀 호출 유형의 테이블 작성후 데이타 쿼리시, 트리 형태의 데이타 구조 쿼리에 대해 알아본다.
일명, 재귀 순환 호출 쿼리!!
간단하게 테이블 구조는 아래와 같다.
- 테이블
create table CATEGORY
(
CATEGORY_SRL NUMBER(10) not null,
SUP_CATEGORY_SRL NUMBER(10),
CATEGORY_NAME VARCHAR2(30) not null
)
tablespace PROJECT_
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 1M
next 1M
minextents 1
maxextents unlimited
pctincrease 0
);
위 테이블은 일련번호의 고유번호와 부모 일련번호를 가르키는 코드 그리고 해당 카테고리에 대한 이름으로 구성된 테이블이다.
고유번호와 부모키를 가지고 단계뿐 아니라 그룹을 함께 구해보자.
-재귀 순환 호출 쿼리
SELECT
ROWNUM no_,
LPAD(' ',(LEVEL-1)*4)||category_srl AS category_code,
LEVEL,
category_name,
sup_category_srl AS sup_category_code,
DECODE(LEVEL,1, category_srl,
2, sup_category_srl,
3, PRIOR sup_category_srl) AS group_code
FROM g
category
START WITH
sup_category_srl IS NULL
CONNECT BY PRIOR
category_srl = sup_category_srl
ORDER BY
group_code ASC