2011-08-17 3 views
1

아래 CodeIgniter Active Record Class를 사용하여 아래 코드 표를 생성합니다.CI Active Record 클래스 사용에 대한 SQL 질문

나는 DateBase 테이블에서 두 개의 테이블을 생성하려고합니다. 과 Table_2010 및 Table_2011이라는 두 HTML 테이블이 있습니다.

/////////////////// YEAR 2010 //////////////// 
// It works quite well to generate 2010 result table. 

$this->db->select('year, distance, gender, rank, name, chiptime, racenumber'); 

       $this->db->order_by("year", "desc"); 

       $this->db->order_by("distance, gender, rank", "asc"); 

       $topNum = 5; 
       $year = 2010;     
       $array = array('rank <=' => $topNum, 'year' => $year); 
       $this->db->where($array); 


       $this->load->model('eventmain_model'); 

       $data['results_2010'] = $this->eventmain_model->get_result_top5($city); 

       $tmpl = $this->common_model->html_table_config(); 

       $this->load->library('table'); 

       $this->table->set_template($tmpl); 

       $this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'ChipTime', 'RaceNo')); 



/////////////////// YEAR 2011 //////////////// 
// I need query several different fields from the same data base table. 
// such as I query 'lap', otherwise 'chiptime' 
// It doesn't work well, since it always included 2010 and 2011 data to my 2nd 2011 new table. 
// I want to remove 2010 rows from the 2011 table. How can I fix this? 
// Is ther an method to new the db select object and generate my 2011 table?  
//Thanks.     
       // load database class 

       $this->db->select('year, distance, gender, rank, name, lap, racenumber'); 

       $this->db->order_by("year", "desc"); 

       $this->db->order_by("distance, gender, rank", "asc"); 

       $topNum = 5; 
       $year = 2011; 
       $this->db->where('rank <=', $topNum); 
       $this->db->where('year', $year); 



       $this->load->model('eventmain_model'); 

       $data['results_2011'] = $this->eventmain_model->get_result_top5($city); 

       $tmpl = $this->common_model->html_table_config(); 

       $this->load->library('table'); 

       $this->table->set_template($tmpl); 

       $this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'Lap', 'RaceNo')); 
+0

약간 혼란 스럽습니다. 두 경우 모두 실제로 쿼리를 실행하고 있습니까? 나는 get()이 보이지 않기 때문에 엄밀히 말하면 여러분은 그것을 호출하지 않고 방대한 질의를 작성했다. –

+0

쿼리 동작을 실행하기위한 또 다른 모델 파일 ('get_result_top5()')이 있습니다. 그것은 아주 잘 작동합니다. 나는 $ this-> db-> select();와'$ this-> db-> where();'부분 만 게시했다. 이 코드 부분을 수정해야한다고 생각했습니다. –

+1

설명해 주셔서 감사합니다. 불행히도 나는 너처럼 당황 스럽다. 두 번째 쿼리에서 2011 년으로 제한하면 2011 년 및 2010 년 데이터를 얻을 수있는 방법을 알 수 없습니다. –

답변

0

CI 공식 포럼의 답변이 있습니다.

$this->table->clear(); 

그리고 내보기 페이지에 코드를 추가하여 문제를 해결했습니다. 감사.

echo 'Table_2010<br>'; 

$this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'ChipTime', 'RaceNo')); 

echo $this->table->generate($results_2010); 
$this->table->clear(); 

echo '<br>'; 
echo 'Table_2011<br>'; 
$this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'Lap', 'RaceNo')); 
echo $this->table->generate($results_2011); 
관련 문제