가계도를 하나의 DB 테이블에 담았다가 손쉽게 쿼리하여 가져올 수는 없을까..?
분류체계를 정해서 한눈에 보여질 수 있도록 할 수 있지 않을까..?
등등에 대해서 목마름을 씻어주는 쿼리 문법.
일단 오라클에는 있고, MySQL 에는 비슷한 다른 방식이 있다는데..
DB2 나 Sybase 등에는 어떤 것들이 있을까.. 이건 숙제다.
connect by 를 이용하려면 DB 모델링에서 하나의 테이블 안에 트리 구조를 위한 조치를 해야 하는데,
자신의 코드와 트리 구조상 상위 위치의 코드 2개를 가지고 있어야 한다.
이를테면, 아래에 예를든 것에서, w2_category 테이블에는..
자신의 코드인 seq_category 와 상위 코드인 bef_category 를 이용했다.
select *
from w2_category
where bef_category > 0 -- 인덱스를 태우지 않는 모냥
connect by bef_category = prior seq_category
start with bef_category = 0
;
만약 아래와 같이 start with 를 사용하지 않는다면..?
어디서 부터 시작해서 트리 구조를 만들어야 할 지 모르기 때문에,
트리 구조가 가능한 모든 조합을 조회하게 된다.
select *
from w2_category
where bef_category > 0
connect by bef_category = prior seq_category
;
그리고, prior 조건의 한쪽에만 사용해야 하는데,
prior 가 붙는 쪽이 트리 구조의 기준이 된다.
select *
from w2_category
where bef_category > 0
connect by prior bef_category = seq_category
;
'컴퓨터 이야기 > 데이타베이스' 카테고리의 다른 글
connect by ~ start with ~ order siblings by ~ 문에 대한 Oracle 9i Plan (실행계획) (7) | 2009.08.02 |
---|---|
오라클 DB 성능 향상 엑셈 MaxGauge (1) | 2009.07.29 |
여러줄 나오는 쿼리를 한줄로 줄일때 Clob 이 대상이라면 다른 방법을 찾아 봐야.. (2) | 2009.05.12 |
WareValley 의 Orange 와 insert into ~ select ~ 구문을 이용한 데이타 DB 업로드 (3) | 2009.01.27 |
WareValley Orange, 다수의 트리거와 프로시저 본문 대상으로 검색 (0) | 2009.01.06 |