4

Zend_Db_Table_Selectを使用してSQLクエリからCOUNT()を取得する際に問題が発生しました。生成するはずのSQLが実際に機能するため、バグの可能性があると思います。Zend Selectクエリは次のとおりです($ thisはZend_Db_Tableであり、table1この例では名前が変更されています)

    $select = $this->select();
    $select->setIntegrityCheck(false);

    // Select Count
    $select->from($this, array("COUNT(*) as 'COUNT'"))
           ->joinLeft('users', 'table1.userID = users.userID')
           ->joinLeft('table2', 'users.anotherKey = table2.anotherKey');

    // Add Where clause after join
    $select->where('users.anotherKey = ?', $anotherKeyValue);

これにより、エラーが発生します。

SQLSTATE[42000]: Syntax error or access violation: 1140 
Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is 
illegal if there is no GROUP BY clause`

ただし、このクエリは...

SELECT COUNT(*) AS 'count' FROM table1
    LEFT JOIN users ON table1.userID = users.userID
    LEFT JOIN table2 ON users.anotherKey = table2.anotherKey
    WHERE users.anotherKey = [anotherKeyValue]

...データベースに対して実行すると、エラーなしで期待される結果が返されます。何が起こっているのか、なぜエラーが発生したのか、そしてそれを回避する方法はありますか?

4

1 に答える 1

2

zend_dbが生成する実際のクエリを確認しようとしましたか?

于 2010-02-06T06:33:49.553 に答える