codeigniter count / with group by

时间:2012-10-18 13:22:24

标签: mysql sql codeigniter group-by

我的数据库中有一个表ANKETADATA,其中包含一列PROVO。我希望得到这样的输出:

povremeno : 15。 (数字显示在PRVO列中发现此行的次数) nikad : 40

MODEL:

$anketadb = $this->load->database('anketa',TRUE);

    $anketadb->select('prvo');
    $anketadb->from('anketadata');
    $anketadb->group_by('prvo');
$result =   $anketadb->get();

$result =   $result->result_array();

$count  =   array('povremeno' => 0, 'nikad' => 0, 'svakibroj' => 0, 'prodajemkupujem' => 0);

foreach($result as $row){
    switch($row){
        case 'povremeno' :  $count['povremeno']++; break;
        case 'nikad' : $count['nikad']++; break;
        case 'svakibroj' :  $count['svakibroj']++; break;
        case 'prodajemkupujem' : $count['prodajemkupujem']++; break;
    }
}
return $count;

控制器:

$this->load->model('anketerezultati_model');
    $data['count'] = $this->anketerezultati_model->prvo();
    $this->load->view('ankete/rezultatiankete', $data);

查看:

echo "povremeno".$count['povremeno'];
echo "nikad".$count['nikad'];

两者的结果均为0。我找不到错误。

2 个答案:

答案 0 :(得分:0)

摆脱这个:

$anketadb->group_by('prvo');

你的foreach:

foreach($result as $row){
   $val = $row['prvo'];
   $count[$val]++;
}

答案 1 :(得分:0)

使用这样的SQL查询执行此操作会不会更快:

SELECT COUNT(*) as `count`, `prvo` FROM `anketadata` GROUP BY `prvo`