2010-08-05 65 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