안녕하세요. 언제나 질문게시판에서 많이 배워갑니다.
각각의 테이블에서 공통된 코드를 가지고 계층형으로 표현할 수 있는 지 궁금해서 질문 드립니다.
예전에는 한 개의 테이블에 code 컬럼, up_code 컬럼 이렇게 주어진 컬럼에 계층형으로 표현했지만
다른 테이블에서 공통된 코드를 가지고 와 계층형으로 표현할 수 있는 지 궁금해서 그렇습니다.
아래와 같은 트리 구조를 쿼리 한번으로 표현할 수 있나요?
A-----
|
A.a-----
|-----1.안녕하세요.
|-----2.반갑습니다.
A.b-----
|-----1.바나나
|-----2.커피
B-----
|
B.a-----
|-----1.B-a-1 입니다..
C-----
|
C.a-----
|-----1.하이
대문자 A,B,C는 one_grp 이라는 테이블에 데이터가 있고
소문자 A.a, A.b, B.a... two_grp 이라는 테이블에 데이터가 있고
숫자 1,2,3는 three_grp 이라는 테이블에 데이터가 있다고 가정하겠습니다.
with one_grp as(
SELECT 'A' AS CODE, '1' AS SORT FROM DUAL
UNION ALL
SELECT 'B', '2' FROM DUAL
UNION ALL
SELECT 'C', '3' FROM DUAL
)
with two_grp as(
SELECT 'A.a' AS CODE, 'A' as UP_CODE, '1' AS SORT FROM DUAL
UNION ALL
SELECT 'A.a', 'A', '2' FROM DUAL
UNION ALL
SELECT 'B.a', 'B', '1' FROM DUAL
UNION ALL
SELECT 'C.a', 'C', '1' FROM DUAL
)
with three_grp as(
SELECT '1' AS CODE, 'A.a' as UP_CODE, '1' AS SORT, '안녕하세요' AS COMM FROM DUAL
UNION ALL
SELECT '2', 'A.a', '2', '반갑습니다' FROM DUAL
UNION ALL
SELECT '1', 'A.b', '1', '바나나' FROM DUAL
UNION ALL
SELECT '2', 'A.b', '2', '커피' FROM DUAL
UNION ALL
SELECT '1', 'B.a', '1', 'B-a-1 입니다' FROM DUAL
UNION ALL
SELECT '1', 'C.a', '1', '하이' FROM DUAL
)
CODE 컬럼과 UP_CODE 컬럼을 이용해서 계층형으로 만들 수 있나요?
아니면 UNION ALL로 다 합쳐서 쿼리를 짜야 되나요?
답변 주시면 감사하겠습니다^^