SELECT
CASE WHEN C.NAME IS NULL THEN B.ID
WHEN B.NAME IS NULL THEN A.ID
ELSE C.ID END ID,
A.NAME L,
B.NAME M,
C.NAME S
FROM STANDARDCATEGORY A ,
STANDARDCATEGORY B ,
STANDARDCATEGORY C
WHERE B.PARENTID(+)=A.ID
AND C.PARENTID(+)=B.ID
AND C.DEPTH(+)=3
AND B.DEPTH(+)=2
AND A.DEPTH(+)=1
ORDER BY 1,2,3;
이쿼리 실행 시 C.NAME S 컬럼은 아우터 조인 건 대로 데이터 없는것도 NULL 로 되는데
B.NAME M, 해당컬럼은 아우터 조인이 안먹네요 ㅠㅠ 뭐가 잘못 된걸까여? ㅠㅠㅠㅠㅠㅠ
파일 첨부한거와같이 데이터 결과가 나오게 만들고 싶습니다 ㅠㅠㅠㅠㅠ
대분류, 중분류, 소분류 다 나오게 하는게 이 쿼리 목적입니다 ㅠㅠ
WITH standardcategory AS ( SELECT 38503 id, NULL parentid, 1 depth, '공용' name FROM dual UNION ALL SELECT 38504, 38503, 2, '풀오버' FROM dual UNION ALL SELECT 39049, 38504, 3, '스웨터_삭제대' FROM dual ) SELECT id , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(name, ','), '[^,]+', 1, 1) l , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(name, ','), '[^,]+', 1, 2) m , REGEXP_SUBSTR(SYS_CONNECT_BY_PATH(name, ','), '[^,]+', 1, 3) s FROM standardcategory START WITH depth = 1 CONNECT BY PRIOR id = parentid ; -- http://gurubee.net/lecture/1300
SELECT a.id , DECODE(a.depth, 1, a.name, 2, b.name, 3, c.name) l , DECODE(a.depth, 2, a.name, 3, b.name) m , DECODE(a.depth, 3, a.name) s FROM standardcategory a , standardcategory b , standardcategory c WHERE b.id(+) = a.parentid AND c.id(+) = b.parentid ORDER BY l , m NULLS FIRST , s NULLS FIRST ;