CI 묻고 답하기

제목 페이징 처리 쿼리를 액티브레코드로 오라클 DB를 select 하고있습니다.
글쓴이 짜이짜이 작성시각 2015/08/12 21:53:58
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 15415   RSS
CI에서 제공하는 페이지네이션을 사용중이구요.

한 블로그에서 오라클에서 rownum으로 페이징처리를 하는 쿼리를 긁어와

오라클 SQL DEVELOPER에서 돌려보니 돌아가네요.



--블로그 쿼리 --
$q = "SELECT * FROM (
                    SELECT A.*, 
                        ROWNUM AS RNUM,
                        FLOOR((ROWNUM-'1')/'10'+'1') AS PAGE,
                        COUNT(*) OVER() AS TOTCNT FROM (
                            select * from T_NOTICE order by F_CONTENT_NUM
                        ) A
                ) WHERE PAGE = '".(int)$page_num."'

-------

이 쿼리를 사용하니 테이블을 찾을 수 없다고 하여

페이징 처리 하기 전 본래의 게시글 리스트를 받아오는 select 쿼리(액티브레코드)에

간단하게 rownum을 사용하여 첫번째 페이지의 리스트를 받아오려고 했습니다.

--본래의 리스트 select 쿼리 --
$this->db->select('*');
    $this->db->from('T_NOTICE');
    $this->db->order_by('F_CONTENT_NUM','desc');

    if($f_where && $f_inputTxt)
        $this->db->like($f_where, $f_inputTxt);
    
    $this->db->where('rownum','10');
----

서두가 길었네요 ㅠㅠ

본래의 질문은 where rownum <= 10  
이 where절을 사용하고 싶은데 액티브레코드에서 어떻게 표현할 수 있을까요?
 다음글 form_validation 함수를 오버라이드 할 수 ... (1)
 이전글 기존 php에서 사용하던 함수를 ci에서 그대로 호출해... (5)

댓글

kaido / 2015/08/13 09:11:32 / 추천 0
$this->db->where('rownum <= ','10');

서두는 길게 보았습니다만 답은 간단하게 달았습니다.

여러조건을 넣으실 때는


$array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);
$this->db->where($array);
짜이짜이 / 2015/08/13 10:17:49 / 추천 0
카이도님 쓸데없이 긴 글 읽어주셔서 감사합니다.
페이지네이션 강의 동영상 잘 봤습니다.