데이터를 쪼개서 조회할려고 합니다. 1 2 1,830

by 동안이 [2015.08.26 11:56:25]


샘플.JPG (112,390Bytes)
샘플2.JPG (26,511Bytes)
쪼개기.JPG (63,989Bytes)

A란 테이블에 두개의 컬럼이 있습니다. ID와 키워드 컬럼이 있습니다.

그래서 조회를 하면 샘플 첨부파일 처럼

ITEM_IDX   KEY_WORDS

1             국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님|  국회의사당

2             국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님|  국회의사당

그런데 이 쿼리의 키워드를 | 기준으로 쪼개서

샘플2 첨부파일 처럼

1 국회

1 정각회

......

1 국회의사당

2 국회

2 정각회

 

이렇게 해당 ID에 키워드 값을 쪼개서 넣을려고 하는데요.

그래서

WITH TT AS
    (
        SELECT KEY_WORDS 키워드 FROM KTDA_PHOTO_FILE GROUP BY KEY_WORDS
    )
    SELECT TRIM(REGEXP_SUBSTR(키워드, '[^|]+', 1, LEVEL)) AS TXT
        FROM TT
        CONNECT BY INSTR(키워드, '|', 1, LEVEL - 1) > 0

 

쪼개면 쪼개기 첨부파일 처럼 쪼개지는데

해당 키워드에 어떤 ID에 포함되어 있는지도 구분이 안되고

저걸 샘플2의 결과 처럼 나오게 할려면 어떻게 쿼리를 짜야 할지 머리가 복잡하네요.... ㅠㅠ

어떻게 해야 될지 방법 좀 부탁드리겠습니다. ㅠㅠ

 

 

by 창조의날개 [2015.08.26 14:51:41]

-- KEY_WORDS가 최대 100로 봅니다.. 필요시 늘려주세요..

WITH TT (ITEM_IDX, KEY_WORDS) AS (
SELECT 1, '국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님|  국회의사당' FROM DUAL UNION ALL
SELECT 2, '국회| 정각회| 조찬법회| 법회| 황진경 총무원장 스님| 총무원장| 총무원장 스님|  국회의사당' FROM DUAL
)
SELECT ITEM_IDX
     , LTRIM(REGEXP_SUBSTR(KEY_WORDS,'[^|]+',1,LV)) KEY_WORDS
FROM TT
   , (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100)
WHERE REGEXP_SUBSTR(KEY_WORDS,'[^|]+',1,LV) IS NOT NULL
ORDER BY ITEM_IDX, LTRIM(REGEXP_SUBSTR(KEY_WORDS,'[^|]+',1,LV))
;

 


by 동안이 [2015.08.26 19:44:46]

감사합니다. 창조님 덕분에 잘 해결 되었습니다. ^^

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