嗨我正在尝试计算行数,但到目前为止没有运气也许数据库存在一些因为我得到一些奇怪的数字
这是数据库egs
poll_id option_poll_id gender
1 100 male
1 100 male
1 103 femeale
1 103 male
所以我想要的是每个选项100和103获得男性或女性的数量
喜欢这个选项100 - > 2个男性和选项103-> 1个男性 提前谢谢。
答案 0 :(得分:5)
以下是直接从http://framework.zend.com/manual/en/zend.db.table.html
中提取的示例 $table = new Bugs();
$select = $table->select();
$select->from($table,
array('COUNT(reported_by) as `count`', 'reported_by'))
->where('bug_status = ?', 'NEW')
->group('reported_by');
$rows = $table->fetchAll($select);
同样适用于此。更改您的表名和字段:)。
您也可以执行@Marc B的查询。这更适用于Zend_Db_Table。
答案 1 :(得分:2)
您的查询是什么样的?这可以为您提供所需的数字:
SELECT option_poll_id, gender, COUNT(gender)
FROM yourtable
GROUP BY option_poll_id, gender
答案 2 :(得分:2)
这是我现在使用的代码但是结果很好但是当我拿到它时它会显示类似
的内容Engine_Db_Table_Rowset Object ( [_rowClass:protected] => Engine_Db_Table_Row [_rowsetClass:protected] => Engine_Db_Table_Rowset [_data:protected] => Array ( [0] => Array ( [poll_option_id] => 108 [gender] => male [count] => 1 ) ) [_table:protected] => Poll_Model_DbTable_Votes Object ( [_rowClass:protected]
foreach ($this->pollOptions as $i => $option_chart_f):
$table = Engine_Api::_()->poll()->api()->getDbtable('votes', 'poll');
$select = $table->select()
->from($table->info('name'), array(
'poll_option_id','gender',
new Zend_Db_Expr('COUNT(gender) as count'),
))
->where('poll_id = ?', $option_chart_f->poll_id)
->where('poll_option_id =?', $option_chart_f->poll_option_id)
->group('poll_option_id')
->group('gender');
$rows = $table->fetchAll($select);
print_r($rows);
endforeach;
谢谢