Количество записей по критерию с group и having

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Количество записей по критерию с group и having

Сообщение pipanchik »

Есть CDbCriteria, в которой есть group и having.
Product::model()->count($criteria) считает не правильно.
Профилирование показывает, что group и having отбрасывается и результат оказывается неверным.
Как быть в такой ситуации?
новичок
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: Количество записей по критерию с group и having

Сообщение Hett »

Возможно поможет distinct?
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Re: Количество записей по критерию с group и having

Сообщение pipanchik »

К сожалению, нет.
having отбрасывает ненужные записи уже из сгруппированного списка.
Все равно результат будет не верен.
новичок
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: Количество записей по критерию с group и having

Сообщение Hett »

Ну напишите нативным SQL запрос на каунт.
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Re: Количество записей по критерию с group и having

Сообщение pipanchik »

Метод count использует встроенную функцию в Mysql count.
SELECT COUNT(DISTINCT `t`.`id`)
таким способом в любом случае не будет правильно работать с having.
На нативном конечно можно, но чет не охота второй раз собирать запрос (один раз собирал уже для criteria).
Может есть более элегантное решение проблемы?
новичок
ramilexe
Сообщения: 8
Зарегистрирован: 2011.09.02, 21:26

Re: Количество записей по критерию с group и having

Сообщение ramilexe »

Можно из кретирии получить готовый запрос и добавить к нему COUNT
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Re: Количество записей по критерию с group и having

Сообщение pipanchik »

А как это сделать, не соображу?
новичок
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Re: Количество записей по критерию с group и having

Сообщение pipanchik »

По идее надо сделать как-то так:
select count(id) from ( $criteria ).
но как так скрестить муху и слона?

----
Пока сделал так

Код: Выделить всё

$countCriteria = clone $criteria;
$countCriteria->select = 'id';
$count = count(Product::model()->findAll($countCriteria)); 
Но не нравится, совершенно. Есть другие варианты?
новичок
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: Количество записей по критерию с group и having

Сообщение Hett »

А без HAVING там точно нельзя?
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Re: Количество записей по критерию с group и having

Сообщение pipanchik »

http://www.sql.ru/forum/actualthread.aspx?tid=997402
глянь, может что подскажешь =)
новичок
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: Количество записей по критерию с group и having

Сообщение Hett »

Да, помнится я ради этой задачи ставил монго ))
Правда у меня немного по сложнее была задача
http://www.sql.ru/forum/actualthread.aspx?tid=953756
Hett
Сообщения: 127
Зарегистрирован: 2011.04.25, 07:18

Re: Количество записей по критерию с group и having

Сообщение Hett »

Есть, кстати, куча поисковых движков, заточенных под это дело, возможно вам этот вариант больше понравится)
pipanchik
Сообщения: 26
Зарегистрирован: 2012.10.24, 22:36

Re: Количество записей по критерию с group и having

Сообщение pipanchik »

Атрибутов всегда разное количество =)
На счет поисковых движков - не вижу смысла (поиск мне не нужен, это для фильтрации).
Так что вопрос остается открытый, как сделать так:

Код: Выделить всё

select count(id) from ( $criteria ) 
новичок
Ответить