얍얍얍얍 얍얍얍
Top N까지의 데이터를 추출한다.
나 자신과의 조인이다. FROM 절에 같은 테이블이 두 번 이상 등장하기 때문에 혼란을 막기 위해 ALIAS를 반드시 표기해주어야 한다.
SELECT A.CATEGORY_TYPE,
A.CATEGORY_NAME,
B.CATEGORY_TYPE,
B.CATEGORY_NAME,
C.CATEGORY_TYPE,
C.CATEGORY_NAME
FROM CATEGORY A,
CATEGORY B,
CATEGORY C
WHERE A.CATEGORY_NAME = B.PARENT_CATEGORY
AND B.CATEGORY_NAME = C.PARENT_CATEGORY;
테이블에 계층 구조를 이루는 컬럼이 존재할 경우 계층 쿼리를 이용해서 데이터를 출력할 수 있다.
SELECT LEVEL,
CATEGORY_TYPE AS TYPE,
CATEGORY_NAME AS NAME,
PARENT_CATEGORY AS PARENT,
SYS_CONNECT_BY_PATH('[' || CATEGORY_TYPE || ']' || CATEGORY_NAME, '-') AS PATH,
CONNECT_BY_ROOT CATEGORY_NAME AS ROOT_INFO,
CONNECT_BY_ISLEAF AS LEAF_INFO
FROM CATEGORY
START WITH PARENT_CATEGORY IS NULL
CONNECT BY PRIOR CATEGORY_NAME = PARENT_CATEGORY
ORDER SIBLINGS BY NAME;