CI 묻고 답하기

제목 mssql 연결해서 사용시에 limit 문제
글쓴이 생뱀탕 작성시각 2011/02/19 02:45:39
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 25766   RSS
mssql 2008 DB를 CI에 물려서 사용중에 있습니다.
그런데 페이징 쿼리를 날리는 중에 2페이지 쿼리를 위해서
==================
$query = $this->db->get('table', 20, 10);
==================
이렇게 사용을 하려고 쿼리를 날리면 제대로된 리스트가 안나오더라구요.
10~20의 목록이 나와야 할거 같은데 훨씬 많은 수의 숫자가 나옵니다.
그리고 순서도 10번 게시물 부터가 아닌 맨 첫번째의 게시물부터 나오는 것 같구요
변경하게 되면 select문을 전부 적어서 top을 이용하는 쿼리를 날려줘야 될거 같은데
그럼 코드도 복잡해지고 훨씬 길어질 것 같은데요
혹시 다른 CI에서 제공되는 라이브러리를 사용할 수 있는 방법이 없을런지요?
 다음글 기본적인 질문입니다. (2)
 이전글 session을 db로 사용하는것과 database a... (2)

댓글

변종원(웅파) / 2011/02/19 17:35:08 / 추천 0
get이나 limit 구문을 매뉴얼에서 보시면 in mysql이라고 나와있습니다.
다른 sql에서는 정상작동 안하는 경우가 꽤 있습니다.

그래서 mssql의 경우 간단한 것 아니면 직접 sql문으로 작성하고 있습니다.

$query = "SELECT *
						FROM (
							SELECT BOARD.no,  BOARD.original_no, BOARD.division,module_no, BOARD.user_no, BOARD.user_id, BOARD.user_name, BOARD.reg_date, BOARD.modify_date, is_notice, BOARD.is_secret, BOARD.subject, BOARD.general_setting, CAST(BOARD.contents as text) as contents, BOARD.files_count, BOARD.download_count, BOARD.scrap_count, BOARD.hit, BOARD.trackback_count, reply_count, BOARD.voted_count, BOARD.blamed_count, BOARD.ip, BOARD.is_delete, BOARD.password, Row_Number() OVER (ORDER BY BOARD.no DESC) AS rownum
							FROM ".$this->table." AS BOARD
							WHERE ".$where."
						) T1
						WHERE rownum BETWEEN ".$start." AND ".$end;
생뱀탕 / 2011/02/19 21:03:36 / 추천 0

감사합니다~직접 작성하는수밖에 없군요 ㅠ
get 구문 사용하면 엄청 소스코드가 엄청 줄어들고 보기도 편해서 좋았는데
mssql에는 사용할수 없다니 아쉽네요