CONNECT BY LEVEL에 대한 질문[도와주세요] 0 3 3,760

by 손님 CONNECT BY [2009.08.18 21:30:14]


안녕하세요

정말 간단한건데요하나 질문드릴게요

예를들어

SELECT AGE ,

                NAME,

                LEVEL

   FROM TABLE_A

WHERE AGE = '23'

      AND  NAME = 'ABC'

CONNECT BY LEVEL < (SELECT COUNT(*)

                                                  FROM TABLE_A

                                               WHERE AGE = '23'

                                                     AND NAME = 'ABC')

이런식으로 조회하니까 CONNECT BY 에서 서브쿼리를 사용할수 없다고 하네요 ㅠㅠ

COUNT만 SELECT 해서 다시 조회할수는 없는 상황이구요

조회부분을 A, COUNT부분을 B 테이블로 묶고조회를 하면 데이타가 반복적으로 나옵니다

간단히 해결할 수 있는 방법이 있을까요?

고수님들 좀 알려주세요ㅠㅠ

by 마농 [2009.08.19 08:12:41]
위 쿼리가 에러가 나지 않는다고 한들 원하시는 자료가 나오진 않을 것입니다.
원치 않는 데이터가 반복적으로 나오겠죠.
connect by level <= 3 식의 쿼리는 1건의 자료를 3건으로 복제할때 사용됩니다만
여러건의 자료에 적용시키면 기하급수적으로 복제가 되게 됩니다.
원하시는 결과가 어떤것인가요?

by 작성자 [2009.08.19 09:17:49]
답변감사합니다.
조회된 결과(ROW)만큼 컬럼으로 1부터 ~ 끝까지 번호순서를 매겨서 가져오려고했습니다.
ROWNUM으로 이용했구요 (제가 ROWNUM에 대해 잘몰랐었네요 ^^; 저는 ROWNUM이 조회시 재정렬해서 가져오는게 아니라 데이타 마다 변하지 않는 고유의NUMBER라고 생각했네요 그래서 데이타가 10개면 1부터~10까지 ROWNUM을 가져오는게 아니라 자신이 가지고있는 ROWNUM을 가져와서
3
4
1
2
5
... 이런식으로 가져올줄 알았네요 ㅠㅠ;;
저의 허접한 생각이었습니다

by 러드 [2009.08.19 09:19:13]
정렬된 순서로 가지고 오고싶으시면 정렬한다음에 다시 rownum하세요^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입