쿼리 요청 드립니다~! 0 5 671

by 김또깡 [SQL Query] [2020.02.19 18:49:51]


아우터조인.png (2,994Bytes)

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, 해당컬럼은 아우터 조인이 안먹네요 ㅠㅠ 뭐가 잘못 된걸까여? ㅠㅠㅠㅠㅠㅠ

 

파일 첨부한거와같이 데이터 결과가 나오게 만들고 싶습니다 ㅠㅠㅠㅠㅠ

 

대분류, 중분류, 소분류 다 나오게 하는게 이 쿼리 목적입니다 ㅠㅠ

by 마농 [2020.02.20 08:57:18]
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

 


by 김또깡 [2020.02.20 11:33:41]

너무감사합니다~~!!!!!!!!!!!!!!!


by 김또깡 [2020.02.20 13:08:17]

아 근데 마농님 ㅠㅠㅠㅠ 이거 레프트아우터조인으로는 구현이 안되는건가요? ㅠ


by 마농 [2020.02.20 13:19:58]
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
;

 


by 김또깡 [2020.02.25 11:28:49]

감사합니다!!!!!!!!!!!!!!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입