1

以下のような質問があります。

select status, count(id) as units from myTable group by status

使用中のテーブルのディスプロサルに Zend_Db_Table オブジェクトがあります。以下のスニペットを使用して上記のクエリを作成しようとしています。

$objTable= new Application_Model_DbTable_MyTable();
$select = $objTable -> select(Zend_Db_Table::SELECT_WITH_FROM_PART)
                    -> setIntegrityCheck(false); // i am also using joins to create the query, but this is not of concern
$select -> columns(array(
           'status' => new Zend_Db_Expr('DISTINCT(STATUS)'),
           'units'  => new Zend_Db_Expr('COUNT(id)')
           ));
$select -> group('status');

上記のスニペットから作成されたクエリは次のとおりです。

select myTable.*, DISTINCT(STATUS) as status, COUNT(id) as units from myTable group by status

myTable.*生成されたクエリからを削除したい。

4

2 に答える 2

1
$select = $db ->select()
              ->distinct()
              ->from('myTable',array('status', 'COUNT(id) as units'))
              ->group('status');
于 2012-08-28T10:11:55.173 に答える
0

代わりにこれを試してください。

$select = new Zend_Db_Select;

$select->from(
             # table
             array(
                  't' => 'myTable'
             ),

             # columns
             array(
                 'status' => 'DISTINCT(STATUS)',
                 'units'  => 'COUNT(id)',
             ));
       ->group('status');

問題は、句で指定された列がない場合、クエリZend_Db_Selectに自動的に追加されることですtable.*->from(

于 2012-08-28T09:38:06.200 に答える