2013-06-14 3 views
2

특정 쿼리에 대한 총 행 수를 얻는 방법과 쿼리 결과를 10 행으로 제한하는 방법. 예를 들어. 나는 샘플이라는 테이블을 가지고있다. 400 행이 있습니다. where name = "% Sam %"와 같은 쿼리를 실행하면 213 행을 반환합니다. 이제 첫 번째 행만 가져 와서 결과를 사용자에게 표시하지만 전체 행을 반환해야합니다. 코드 점화기에서 어떻게해야합니까?코드 점화 기 SQL_CALC_FOUND_ROWS

SELECT 
     SQL_CALC_FOUND_ROWS * 
FROM 
     sample 
WHERE 
     name like "%sam%" 

? 총 개수를 검색하는 방법은 무엇입니까?

답변

1

당신은 SQL_CALC_FOUND_ROWS의 결과를 얻기 위해 두 번째 쿼리를 실행해야합니다 SQL_CALC_FOUND_ROWS를 사용하여 발견 된 값을 반환합니다

SELECT FOUND_ROWS() 

. 당신은하지만, 결과를 얻기 쉽게 별칭을 사용하여 찾을 수 있습니다 :

SELECT FOUND_ROWS() AS num_results 
+0

완벽하게 작동했습니다. 고마워요 :) –

0

당신은 카운트를 얻기 위해 두 개의 쿼리 하나를 사용할 수 있습니다 다른 하나는 제한된 결과를 반환합니다. 모델 만

변수 수를 반환하는 함수를 작성하고 페이지가 매겨진 결과를 생성하는 두 번째 함수를 작성처럼

.

예 ..

public function count($where){ 
     $query = $this->db->query("select count(id) as count from clients $where"); 
     return $query->row('count'); 
     } 
} 

public function limit($sidx,$sord,$start,$limit,$where){ 
     $query = $this->db->query("select * from clients $where ORDER BY $sidx $sord LIMIT $start , $limit"); 
     if ($query->num_rows() > 0){ 
      return $query->result_array(); 
     } 
} 

그리고 여기 컨트롤러 코드를

$를 어디로 = //

$count = count($this->model->count($where)); 

     if($count > 0) { $total_pages = ceil($count/$limit); } else { $total_pages = 0; } 

     if ($page > $total_pages) $page = $total_pages; 


     $start = $limit * $page - $limit; 


     $users = $this->model->limit($sidx,$sord,$start,$limit,$where); 

계산 ............. ....

관련 문제