COUNT(*) with GROUP BY does not work as expected

- WindBridges
- Member | 10
Hello, guys. I need to execute such query: SELECT name, COUNT(*) FROM table
GROUP BY name LIMIT 0,10
I do:
$this->table->select('name, COUNT(*)');
$this->table->group('name');
$this->table->page(1,10);
$this->table->fetchPairs(...);
But also I need to count number of rows in while result set without limit. So I insert before fetchPairs:
$this->table->count('*');
I see that ORM generates such queries:
SELECT COUNT(*) FROM table
SELECT name, COUNT(*) FROM table GROUP BY name LIMIT 10 OFFSET 0
But where is GROUP BY in first query? I need count of grouped results, not all of them. How to do exactly that I need?
Last edited by WindBridges (2012-04-02 00:46)

- petr.pavel
- Member | 535
Shouldn't count('*') come before page() instead of
before fetchPairs()? Just guessing.
Anyway, if it doesn't work, you'll probably have to run the two queries
manually – one without page() counting the total # of rows, and
one with page() for the per-group counts. For the total count, you
can COUNT(DISTINCT name) (without group) or just run
your query with group and fetchPairs and then count
with PHP function count().