database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 27209 게시물 읽기
No. 27209
CLOB--->Varchar2(4000) 변경후 문제..
작성자
Wenzie
작성일
2006-07-05 23:58ⓒ
2006-07-06 00:51ⓜ
조회수
7,754

생초보 고수님의 답변 기다립니다..도와주세요~

 

사용후기나 글을 쓰는데요..

내용을 CLOB로 했는데 CLOB를 사용하면 안된다고 해서..(진작 말하지..)

 

내용을 전부 VARCHAR2(4000)으로 바꿨습니다..

 

일단 지금 상태는

 

freeboard란테이블에는 글쓴이,제목...내용빼고 다 들어값니다.

 

그리고 freeboard_contents에는 freeboard의 내용이 들어값니다..

 

freeboard의 시퀀스가 f_seq이구요 freeboard_contents의 시퀀스가 c_seq입니다

 

freeboard_contents에 내용을 넣을때 freeboard의 시퀀스 값을 넣었습니다..

 

c_seq,f_seq,c_contents 이렇게 있는거죠..

 

문제는 4000이상의 글이 들어왔을경우인데요..

 

내용을 넣고 보는데는 상관없는데요..

 

리스트에서 내용검색이 있습니다..

 

그래서 제 나름대로 쿼리를 짰는데요..

 

리스트에 같은 내용이 2개씩 나오더군요...

 

 

4000이상의 글이 들어오면..

 

freeboard는 하나지만..

 

freeboard_contents는 2개가 되거든요.. 4000씩 잘라서 루프돌면서 인서트해서요..

 

select * from (select rownum as rnum, a.f_subject,a.f_name,a.f_seq,b.c_contents from freeboard a,freeboard_contents b where a.f_seq=b.c_seq order by f_seq DESC ) WHERE rnum >=1 AND rnum < 11 order by f_seq DESC

 

이렇게 했더니 4000넘는 글들은 전부 2개씩 나오는데요..

 

1개씩 나오게 할 수 없나요??

 

질문을 이해 하셨을라나..-_-; 어렵게 쓴듯하네요..

 

oracle9i + asp 입니다..

혹 이해가 안가셨을가봐 -_-;

예제입니다..

 

freeboard

 

f_seq subject name
1 111111 xxxx
2 222222 zzzzz


 

freeboard_contents

c_seq f_seq c_contents
1 1 aaaaaaaaaaaaaaaaaaaaaaaa
2 1 bbbbbbbbbbbbbbbbbbbbbbbb
3 2 ccccccccccccccccccccccccc


 

위의 쿼리로 했을때의 리스트 페이지 입니다..

freeboard_list.asp

 

 

no 제목 글쓴이
3 111111 xxxx
2 111111 xxxx
1 222222 zzzzzz


 

리스트를 보시면 알겠지만..xxxx란 사람이 쓴 글은 1개인데 리스트에서는 같은게 2개가 나옵니다.

즉 내용(freeboard_content 테이블)이 길어서 2개의 데이터를 가지고 있습니다..

찾아봤지만 도저희 모르겠네요..답변 부탁드려요~~~

이 글에 대한 댓글이 총 4건 있습니다.

c_contents 에 한 사람이 쓴글이 3개, 4개도 들어갈수 있는건가요?

나초보님이 2006-07-06 10:37에 작성한 댓글입니다. Edit

지금 말하신대로 list만을 위한 sql이라면 contents를 포함하실 필요가 없으실거 같은데요...

 

P.S 새로 다신 덧글에 대한 답변입니다.

예를 들어 freeboard_contents를 조회할때

 

where c_contents like '%abcd%' 로 검색을 했다고 치면

 

결과컬럼으로 c_seq를 받을 필요도 없이 list에 나와야할것은 해당 게시물의 header정보가 될것이므로 f_seq만 리턴받으면 되지 않겠는가... 라고 답변드린겁니다.

 

각 게시물의 본문을 전부 포함할경우 본문에 c_seq는 그룹을 걸수가 없기 때문에 c_seq의 수만큼 같은 글이 반복되겠죠.

 

select *
  from ( select rownum as rnum

              , *

           from ( select a.f_subject
                       , a.f_name
                       , a.f_seq
                    from freeboard          a
                       , freeboard_contents b
                   where b.c_contents like '%abcd%'
                     and a.f_seq = b.f_seq

                   group by a.f_subject

                       , a.f_name

                       , a.f_seq )

          order by f_seq DESC )
 WHERE rnum >= 1
   AND rnum  < 11
 order by f_seq DESC

임재흥(임재흥)님이 2006-07-06 11:19에 작성한 댓글입니다.
이 댓글은 2006-07-07 10:16에 마지막으로 수정되었습니다.

내용을 길게 쓴다면 3~4개 넘을 수 있죠..

 

검색조건에 내용 검색이 들어가 있습니다..-_-;

 

답변 감사합니다~~

Wenzie님이 2006-07-06 12:15에 작성한 댓글입니다.
이 댓글은 2006-07-06 12:16에 마지막으로 수정되었습니다. Edit

답변 감사합니다~~~~~

 

그런데 오류가 나네요..-_-

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC driver for Oracle][Oracle]ORA-00979: not a GROUP BY expression

 

아마도 rnum때문인듯합니다..

 

group by에 rnum을 추가하면..

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC driver for Oracle][Oracle]ORA-00904: invalid column name

 

 

이런 오류가 나네요..-_-;

wenzie님이 2006-07-06 15:52에 작성한 댓글입니다.
이 댓글은 2006-07-06 16:06에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27213TOAD 한글 메뉴얼 [5]
김기홍
2006-07-06
2873
27212not exists select 'X' 가 왜 쓰이는 건가요??? [1]
이영신
2006-07-06
8673
27211deadlock 걸렸을때 ? [1]
초보dba
2006-07-06
2780
27209CLOB--->Varchar2(4000) 변경후 문제.. [4]
Wenzie
2006-07-05
7754
27208cost [2]
조명구
2006-07-05
1088
27207OCP 자격증에 대한 질문.. [5]
류지훈
2006-07-05
1102
27206함수나 프로시저 사용여부를 알려면... [1]
게스트
2006-07-05
1438
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다