2012-06-11 66 views
1

我有一個表單,我在其上選擇不同的框,並且對於每個框,在數據庫中存在一些記錄(即框的開口數),但可能對於選定的框沒有記錄存在,即盒子甚至沒有打開一次。目前,當我選擇不同的盒子,並且如果盒子不存在記錄,它甚至不會返回我想要的空數組,即使返回所選盒子的空結果。我怎麼能做到這一點?我的查詢是使用SQL獲取空記錄

public function getBoxOpenings($boxes, $from_date, $to_date){ 
$query = $this->db->select('box_id, COUNT(box_id) AS Openings') 
    ->from('mc_boxes_has_openings') 
    ->where_in('box_id', $boxes) 
    ->where('actiontime >=', $from_date) 
    ->where('actiontime <=', $to_date) 
    ->group_by('box_id') 
    ->get(); 
$data = $query->result_array(); 
return $data; 
} 

編輯:

如果我選擇3盒並提交表格和記錄存在只有2盒返回這樣

Array 
(
[0] => Array 
    (
     [mc_boxes_idmc_boxes] => 12 
     [location] => FRA-Air 
     [Openings] => 1 
    ) 

[1] => Array 
    (
     [mc_boxes_idmc_boxes] => 14 
     [location] => FRA-Hof 
     [Openings] => 1 
    ) 

) 

東西,我怎樣才能得到所有三個一個空的記錄這樣

[2] => Array 
    (
     [mc_boxes_idmc_boxes] => 16 
     [location] => Test 
     [Openings] => 
    ) 

感謝

+0

請詳細說明更多的問題。描述表格和'box_id'代表什麼...... –

+0

@ Flielix GalindoAllué好的,讓我編輯它 –

+0

@FèlixGalindoAllué請在我編輯的問題上找點工夫 –

回答

1

爲什麼不計算整個記錄?

public function getBoxOpenings($boxes, $from_date, $to_date){ 
$query = $this->db->select('box_id, COUNT(*) AS Openings') 
    ->from('mc_boxes_has_openings') 
    ->where_in('box_id', $boxes) 
    ->where('actiontime >=', $from_date) 
    ->where('actiontime <=', $to_date) 
    ->group_by('box_id') 
    ->get(); 
$data = $query->result_array(); 
return $data; 
} 

雖然我不明白你GROUP_BY條款等

+0

不同的盒子有不同的開口,所以我必須計算單個盒子的開口 –