У меня проблема с получением COUNT () из SQL-запроса с использованием Zend_Db_Table_Select, и я думаю, что это может быть возможной ошибкой, поскольку генерируемый им SQL действительно работает. Вот запрос Zend Select: ($ это 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]
... возвращает ожидаемые результаты без ошибок при запуске с базой данных. Есть идеи, что происходит, почему ошибка и как ее обойти?