COUNT количества строк для запроса с GROUP BY

alexhemp

Новичок
COUNT количества строк для запроса с GROUP BY

Имеется стандартная задача - постраничный вывод.

Штатное решение для MySQL - известно - сперва
COUNT(*) для выбранных условий, потом второй запрос, уже с LIMIT, на основании количества записей подходящих под условие.

Но! Запрос усложнили - добавили группировку (сделан фильтр по параметрам).

Теперь в конструкции SELECT COUNT(*) FROM table WHERE ... GROUP BY ... HAVING ...

Возвращается, естественно, не одна строка, несколько, в каждой количество записей в каждой группе - как и должно быть - агрегатная ф-ция посчиталась для каждой группы.

Как-бы посчитать количество групп? - по сути количество строк, которое потенциально может вернуть запрос.

Делать mysql_count - не позволяет религия - некрасиво и на большом количестве результатов будет замедлять работу :)
 

Profic

just Profic (PHP5 BetaTeam)
1) SQL_CALC_FOUND_ROWS + FOUND_ROWS()
2) SELECT COUNT(*) FROM (SELECT ... ) AS tmp; (mysql > 4.1)
 

alexhemp

Новичок
Profic
Спасибо, первое то что нужно. MySQL < 4.1 ;-)

Нужно чтобы на 3.х работало вероятно будет.

Похоже придется делать mysql_num_rows для MySQL < 4 и FOUND_ROWS для 4 и выше...
 

.des.

Поставил пиво кому надо ;-)
alexhemp, что именно мешает продолжать делать подсчет строк старым способом? (естественно GROUP BY для COUNT надо убрать.)
Штатное решение для MySQL - известно - сперва
COUNT(*) для выбранных условий, потом второй запрос, уже с LIMIT, на основании количества записей подходящих под условие.
 
Сверху