부모글과 답변글의 내용을 하나의 레코드로 만드는 방법좀 질문드릴께요 0 6 1,692

by 천고민선 [SQL Query] [2011.09.14 13:07:22]



안녕하세요.
여러방법으로 시도하다가 안되서 질문을 드립니다.

마이그레이션을 하려 하는데 기존 테이블구조와 신규 테이블구조가 달라서 질문드립니다.
기존 테이블 구조는 원글 레코드와 답글 레코드가 따로 존재 합니다.
하지만 신규 테이블 구조는 하나의 row에 원글 내용과 답글 내용이 같이 들어갑니다.
원글과 답글은 하나씩만 존재하구요.

예를 들겠습니다.
num 제목  내용 master_num depth
1 원글1번제목 원글1번 내용 1 1
2 원글1번에대한 답변제목 원글1번에 대한 답변내용 1 2
3 원글2번제목 원글2번 내용 3 1
4 원글2번에대한 답변제목 원글2번에 대한 답변내용 3 2

내용은 데이타 타입이 CLOB 입니다.
위와 같이 제목과 내용이 들어가고 master_num은 원글에 대한 num가 들어가고 depth는 1번은 원글이고
2번은 답글입니다.

신규 테이블에는 위 표의 제목중 원글의 제목과 원글의 내용 답변의 내용이 들어가야 합니다.
예로
num 제목 내용 원글에 대한 답변내용
 1 원글1번제목 원글1번내용 원글1번에대한답변내용

decode로 했더니 row가 2개씩 생겨서 쓸 수가 없고
서브쿼리로 했더니 row가 많이 있다 하여 않된다 합니다.

긴글 읽어 주셔서 감사합니다.
답변 부탁드리겠습니다.
by 하얀비 [2011.09.14 15:13:41]
데이트 이관하시는게 목적이시면 굳이 저렇게 쿼리를 만드실 필요가 없지 않나요?

저라면 힘들게 SELECT 문을 만들기보다

FOR 나 커서를 이용해서 이관하겠습니다.

즉 원본글의 로우를 INSERT하고 답글은 원본글에 업데이트 하도록 하면 간단하게

해결될거 같습니다.

by 천고민선 [2011.09.14 16:08:23]
답변 주셔서 감사합니다.
저두 그렇게 하려 했는데
다른 방법이 있다면 알아보고 싶어서 그랬습니다.
제 질문에 대한 방법은 힘들까요??

by 하얀비 [2011.09.14 20:55:24]
select wm_concat(txt) from
(
select 1 num, '1' txt, 1 master_num, 1 depth from dual
union all
select 2 , '1-1' , 1 , 2 from dual
union all
select 3 , '2' txt , 3 , 1 from dual
union all
select 4 , '2-1' txt, 3 , 2 from dual)
where depth > 1
group by master_num

이렇게 쿼리르 만들어서 조인을 하든지

스칼라 서브쿼리로 사용하시면 될거 같습니다.

by 하얀비 [2011.09.14 20:55:55]
아 근데 clob은 될지 모르겠네요 테스트를 안해봐서 ;;;

by 천고민선 [2011.09.15 10:53:45]
답변 감사합니다.

by 마농 [2011.09.16 16:01:41]
SELECT master_num num
, MIN(DECODE(depth, 1, 제목)) 제목
, MIN(DECODE(depth, 1, 내용)) 내용
, MIN(DECODE(depth, 2, 내용)) 답변내용
FROM t
GROUP BY master_num
;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입