Количество записей по критерию с group и having
Количество записей по критерию с group и having
Есть CDbCriteria, в которой есть group и having.
Product::model()->count($criteria) считает не правильно.
Профилирование показывает, что group и having отбрасывается и результат оказывается неверным.
Как быть в такой ситуации?
Product::model()->count($criteria) считает не правильно.
Профилирование показывает, что group и having отбрасывается и результат оказывается неверным.
Как быть в такой ситуации?
новичок
Re: Количество записей по критерию с group и having
Возможно поможет distinct?
Re: Количество записей по критерию с group и having
К сожалению, нет.
having отбрасывает ненужные записи уже из сгруппированного списка.
Все равно результат будет не верен.
having отбрасывает ненужные записи уже из сгруппированного списка.
Все равно результат будет не верен.
новичок
Re: Количество записей по критерию с group и having
Ну напишите нативным SQL запрос на каунт.
Re: Количество записей по критерию с group и having
Метод count использует встроенную функцию в Mysql count.
SELECT COUNT(DISTINCT `t`.`id`)
таким способом в любом случае не будет правильно работать с having.
На нативном конечно можно, но чет не охота второй раз собирать запрос (один раз собирал уже для criteria).
Может есть более элегантное решение проблемы?
SELECT COUNT(DISTINCT `t`.`id`)
таким способом в любом случае не будет правильно работать с having.
На нативном конечно можно, но чет не охота второй раз собирать запрос (один раз собирал уже для criteria).
Может есть более элегантное решение проблемы?
новичок
Re: Количество записей по критерию с group и having
Можно из кретирии получить готовый запрос и добавить к нему COUNT
Re: Количество записей по критерию с group и having
По идее надо сделать как-то так:
select count(id) from ( $criteria ).
но как так скрестить муху и слона?
----
Пока сделал так
Но не нравится, совершенно. Есть другие варианты?
select count(id) from ( $criteria ).
но как так скрестить муху и слона?
----
Пока сделал так
Код: Выделить всё
$countCriteria = clone $criteria;
$countCriteria->select = 'id';
$count = count(Product::model()->findAll($countCriteria));
новичок
Re: Количество записей по критерию с group и having
А без HAVING там точно нельзя?
Re: Количество записей по критерию с group и having
http://www.sql.ru/forum/actualthread.aspx?tid=997402
глянь, может что подскажешь =)
глянь, может что подскажешь =)
новичок
Re: Количество записей по критерию с group и having
Да, помнится я ради этой задачи ставил монго ))
Правда у меня немного по сложнее была задача
http://www.sql.ru/forum/actualthread.aspx?tid=953756
Правда у меня немного по сложнее была задача
http://www.sql.ru/forum/actualthread.aspx?tid=953756
Re: Количество записей по критерию с group и having
Есть, кстати, куча поисковых движков, заточенных под это дело, возможно вам этот вариант больше понравится)
Re: Количество записей по критерию с group и having
Атрибутов всегда разное количество =)
На счет поисковых движков - не вижу смысла (поиск мне не нужен, это для фильтрации).
Так что вопрос остается открытый, как сделать так:
На счет поисковых движков - не вижу смысла (поиск мне не нужен, это для фильтрации).
Так что вопрос остается открытый, как сделать так:
Код: Выделить всё
select count(id) from ( $criteria )
новичок