Как получить общее количество строк в запросе GROUP BY?

Из руководства PDO:

PDOStatement :: rowCount () возвращает количество строк , затронутых последним инструкция DELETE, INSERT или UPDATE исполняется соответствующими PDOStatement объект.

Если последний оператор SQL, выполненный связанное состояние PDOS было оператор SELECT , некоторые базы данных могут вернуть количество строк, возвращаемых это заявление . Однако это поведение не гарантируется для всех базы данных , на которые нельзя полагаться для портативных приложений.

Я узнал об этом совсем недавно. Я только что изменил уровень абстракции базы данных, чтобы не использовать SELECT COUNT (1) ... больше, потому что просто запрос фактических строк и последующий подсчет результата был бы намного эффективнее. А теперь PDO этого не поддерживает!?

Я не использую PDO для MySQL и PgSQL, но использую для SQLite. Есть ли способ (без полного изменения dbal назад) подсчитать такие строки в PDO? В MySQL это будет примерно так:

$q = $db->query('SELECT a, b, c FROM tbl WHERE oele = 2 GROUP BY boele');
$rows = $q->num_rows;
// and now use $q to get actual data

С драйверами MySQLi и PgSQL это возможно. Со всеми PDO это не так!?

PS. Моим первоначальным решением было расширить метод SQLResult-> count (мой собственный), чтобы заменить SELECT ... FROM на SELECT COUNT (1) FROM и просто вернуть это число (очень неэффективно , но только для SQLite PDO). Который' Однако этого недостаточно, потому что в приведенном выше примере запроса используется GROUP BY , что изменит значение / функцию COUNT (1) .

44
задан Rudie 6 December 2017 в 14:09
поделиться