Como obter o número total de linhas de uma consulta GROUP BY?

No manual DOP:

PDOStatement :: rowCount () retorna onumero de linha afetado pelo últimoDELETE, INSERT ou UPDATE executada pelo objeto PDOStatement correspondent

Se a última instrução SQL executada pelo PDOStatement associado for um SELECT declaração,alguns bancos de dados podem retornar o número de linhas retornadas por essa instrução. No entanto, esse comportamento énão garantido para todos os bancos de dados e não deve ser invocado para aplicativos portátei

Descobri isso apenas muito recentemente. Acabei de alterar minha camada de abstração de db para não usarSELECT COUNT(1) ... mais, porque apenas consultar as linhas reais e depois contar o resultado seria muito mais eficiente. E agora o DOP não suporta isso!?

Eu não uso o DOP para MySQL e PgSQL, mas uso para SQLite. Existe uma maneira (sem alterar completamente o dbal back) para contar linhas como esta no DOP? No MySQL, isso seria algo como isto:

$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

Com os drivers MySQLi e PgSQL, isso é possível. Com todo o DOP, não é!?

PS. Minha solução inicial foi estender o método SQLResult-> count (meu) para substituirSELECT ... FROM deSELECT COUNT(1) FROM e apenas retorne esse número (muito ineficiente, mas apenas para SQLite PDO). Isso não é bom o suficiente, porque no exemplo de consulta acima é umGROUP BY, o que mudaria o significado / função doCOUNT(1).

questionAnswers(11)

yourAnswerToTheQuestion