Zend framework 使用zend_db_select PHP在一列中计算不同的单元格

Zend framework 使用zend_db_select PHP在一列中计算不同的单元格,zend-framework,select,count,distinct,Zend Framework,Select,Count,Distinct,我试图计算一列(测试)中特定单元格的出现次数,然后能够在一个查询中以数组的形式回显它们。exmp 我希望能够将每个测试的计数作为如下所示的数组进行响应 $result['echo'] = 2 $result['holter'] = 1 $result['angio'] = 3 我能够通过多个查询(每个测试一个查询)来实现每个测试的数量,这似乎效率很低,而以数组的形式获得结果似乎是解决方案。使用zend_bd_select,非常感谢您的帮助 这使用了一个简单的Zend_Db_Select查询和一

我试图计算一列(测试)中特定单元格的出现次数,然后能够在一个查询中以数组的形式回显它们。exmp

我希望能够将每个测试的计数作为如下所示的数组进行响应

$result['echo'] = 2
$result['holter'] = 1
$result['angio'] = 3

我能够通过多个查询(每个测试一个查询)来实现每个测试的数量,这似乎效率很低,而以数组的形式获得结果似乎是解决方案。使用zend_bd_select,非常感谢您的帮助

这使用了一个简单的Zend_Db_Select查询和一个循环来将结果处理成一个数组,如图所示

$groups = array();  // same as $result in your question

$select = $dbTable->select()
                  ->from($dbTable, array('user_id', 'test'))
                  ->where('user_id = ?', $user_id);

$result = $select->query();

while (($row = $result->fetch()) !== false) {
    $test = $row['test'];
    if (!isset($groups[$test])) {
        $groups[$test] = 1;
    } else {
        $groups[$test]++;
    }
}
最后,
$groups
应通过
test
列值索引,并计算其发生的次数。我不相信只有一个查询可以实现这个结果,至少在没有存储过程或运行许多子查询的情况下是这样

$sql = $select->from('table', array('test', 'COUNT(test)'))->group('test');
$array = $db->fetchPairs($sql);
$sql = $select->from('table', array('test', 'COUNT(test)'))->group('test');
$array = $db->fetchPairs($sql);