2010-08-05 29 views
0

笨更好的劇本流我以下數據:用於查詢

promo_id date time reg_cnt notes 
2760 2010-06-02 01:30:00 2 - 
2760 2010-06-02 05:30:00 2 - 
2760 2010-06-03 07:00:00 1 - 
2760 2010-06-03 07:30:00 2 - 
2760 2010-06-03 08:30:00 3 - 
2760 2010-06-04 09:00:00 1280 promo from vendor xxx 
2760 2010-06-04 09:30:00 6 - 
2760 2010-06-04 10:00:00 3 - 
2760 2010-06-04 10:30:00 5434 TVC program xxx 

我需要它來顯示這樣的:

PROMO DATE REG CNT NOTES 
2760 2010-06-02 4 - 
2760 2010-06-03 6 - 
2760 2010-06-04 6723 promo from vendor xxx, TVC program xxx 

我可以簡單的方式想不通到獲取這些數據。 現在,我做了我的模型是這樣的:

$data = array(); 
$query = $this->db->query("SELECT promo_id, date, SUM(reg_cnt) AS reg_cnt FROM promo_signup"); 
foreach($query->result_array() as $q){ 
    $data[ $q['promo_id'] . '-' . $q['date'] ] = $q; 
    $query2 = $this->db->query("SELECT notes FROM promo_signup WHERE date = '" . $q['date'] . "' AND promo_id = '" . $q['promo_id'] . "'"); 
    $data2 = array(); 
    foreach($query2->result_array() as $q2){ 
     $data2[] = $q2['notes']; 
    } 
    $data[ $q['promo_id'] . '-' . $q['date'] ]['notes'] = $data2; 
} 

然後,我仍然可以通過$data必須循環對我的看法,以顯示它。

我想這是處理能力的浪費相比,下面的代碼(如果我沒費CI):

$data = array(); 
$query = $this->db->query("SELECT promo_id, date, SUM(reg_cnt) AS reg_cnt FROM promo_signup"); 
foreach($query->result_array() as $q){ 
    $data[ $q['promo_id'] . '-' . $q['date'] ] = $q; 
    $query2 = $this->db->query("SELECT notes FROM promo_signup WHERE date = '" . $q['date'] . "' AND promo_id = '" . $q['promo_id'] . "'"); 
    $data2 = array(); 

    //echo data here 

    foreach($query2->result_array() as $q2){ 
     $data2[] = $q2['notes']; 

     //echo notes data here 

    } 
} 

那麼,有沒有更好的方法CI幹什麼呢?

對不起,如果你們在上面的代碼中發現了一些錯誤,因爲它只是概念代碼。

回答

1

的Kristoffer是正確的,你應該把在模型數據處理,控制器中的業務邏輯和視圖中的視圖。

欲瞭解更多信息,請參閱CI的MVC page,他們的Controller page,他們的Model page,和他們的View page。你會想在這裏相信我們,以傳統的方式使用PHP會給你帶來許多麻煩。 MVC設計模式是要走的路線。在你走之前,你需要了解它。如果這些網頁無法幫助您,請搜索「codeigniter mvc help」或教程或視頻或其他內容。

無論如何...對你的MySQL問題。試試這個:

SELECT promo_id, date, SUM(reg_cnt) AS reg_cnt, GROUP_CONCAT(DISTINCT notes SEPARATOR ', ') AS notes FROM promo_signup GROUP BY date 

有關GROUP BY(聚合)功能的更多信息,請參閱this page from MySQL

+0

啊,謝謝! GROUP_CONCAT是我所需要的。至於MVC,它是MVC。以上所有查詢都在我的模型上。對不起,如果我的問題不夠清楚。 – ariefbayu 2010-08-06 02:15:43

0

CI是基於MVC模式,要做到做你的方式(不CI)將破壞使用CI的宗旨放在首位

+0

這就是爲什麼我在這裏問。也許有人知道如何更好地處理它... – ariefbayu 2010-08-05 09:38:36