Как считать строки Zend Framework? - PullRequest
1 голос
/ 20 мая 2011

Привет, я пытаюсь подсчитать количество строк, но пока не повезло, может быть, есть что-то с базой данных, потому что я получаю некоторые странные числа

вот база данных 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 мужского пола Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 20 мая 2011

Ниже приведен пример, взятый непосредственно из 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.

2 голосов
/ 20 мая 2011

это код, который я использую сейчас, однако результаты хорошие, но когда я их получаю, он показывает что-то вроде

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;

Спасибо

2 голосов
/ 20 мая 2011

Как выглядит ваш запрос? Вы должны получить нужные вам цифры:

SELECT option_poll_id, gender, COUNT(gender)
FROM yourtable
GROUP BY option_poll_id, gender
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...