ORACLE GRID형태의 계층형 데이타
계층형 데이타
Tree 형태의 구조다
이번에 설명할 계층구조는 한컬럼의 Tree형 데이타가아닌
여러컬럼의 Tree형 데이터를 표현하려고 한다.
원하는 결과물
Java Script 쪽은 의 코드는 왠만큼 구현 해봤고
거의 View단에서 처리를 하는 스타일이기 때문에
Oracle에서는 아직 실력이 부족하다.
물론 Jqgrid 를 사용하여 여러 컬럼에 계층형 구조를 만들때 Java나 Js로 구현 가능하지만
속도문제가 발생하기 때문에 Oracle에서 처리하는 방식으로 구현을 하였다.
물론 도움을 받고 처리를 하였지만.
Connect by 를 사용하여 각 로우의 계층 구조로 데이타를 조회하였다.
여기까지는 Connect By의 구조를 이해한다면 쉽게 구현 할 수 있었을 것이다.
여기서 부터 해결책이 나질 않아 도움을 요청 받았다.
총괄자,내검원,담장자 등의 내용을 제거 하고
사무소, 청에 대해서 데이타를 조회하려고 한다.
1. WITH 명칭 AS()문장을 사용하여 SQL 생성
2. SYS_CONNECT_BY_PATH("사용할 컬럼명" , '/') 구분자 사용
WITH A AS(
SELECT ... FROM ...
) , B AS (
SELECT SYS_CONNECT_BY_PATH('컬럼명' , '구분자') ATREE
FROM A
START WITH 시작값 CONNECT BY PRIOR 조건절
)
SELECT
REGEXP_SUBSTR(ATREE, '[^/]+' , 1 , 2) AS LVL_02 ,
REGEXP_SUBSTR(ATREE, '[^/]+' , 1 , 3) AS LVL_03 ,
REGEXP_SUBSTR(ATREE, '[^/]+' , 1 , 4) AS LVL_04 ,
REGEXP_SUBSTR(ATREE, '[^/]+' , 1 , 5) AS LVL_05 ,
FROM B
-핵심-
WITH()절
SYS_CONNECT_BY_PATH('컬럼명' , '구분자')
REGEXP_SUBSTR(ATREE, '[^/]+', 1, 3)
이글을 본고 문조건 구현 할 수 있진 않겠지만 포인트는 집어 줄 수 있을 거 같은 생각이 든다
Sample Sql
Connect by + Sys_Connect_by_path 를 사용
가로형태의 계층 구조를 표현하고자 할때 사용한다.
JqGrid에서 컬럼 별로 표현하고자 할때 사용하면 도움이 될거 같다.
'IT > oracle&mysql' 카테고리의 다른 글
Oracle Ansi 외부조인 (outer join) (0) | 2016.03.29 |
---|---|
ORACLE 세션테이블 TEMPORARY TABLE 생성 (0) | 2016.03.23 |
ORACLE 사용자 LOCK 및 로그인 패스워드 부여 (0) | 2016.03.23 |
oracle java에서 암호화된 파일 oracle에서 복호화 처리 (0) | 2016.03.23 |
전자정부 프레임워크 ibatis xml table comment 생성 (0) | 2016.03.21 |