[EDIT]
se mueve a
http://www.yiiframework.com/forum/index.php?/topic/5504-countcdbcriteria-with-distinct-and-select-params/
Hola
no se si es un bug o algo por el estilo, les cuento lo que me pasa
primero el codigo:
// pruebas
$columnas=array();
$columnas[]='idProfesional';
$columnas[]='estado';
$criteria->select=$columnas;
$criteria->distinct=true;
$cantidad=Rp_profesionales::model()->count($criteria);
Yii::log('ejecuto el count', 'trace');
Yii::log($columnas[0], 'trace');
Yii::log($columnas[1], 'trace');
// pruebas
y el log
2009/11/09 10:29:58 [trace] [system.db.CDbCommand] Querying SQL: SELECT DISTINCT COUNT(*) FROM Rp_profesionales
WHERE Rp_profesionales.estado like :estado
2009/11/09 10:29:58 [trace] [application] idProfesional
2009/11/09 10:29:58 [trace] [application] estado
ahora
lo que yo esperaba es
SELECT COUNT(distinct idProfesional,estado) FROM `Rp_profesionales` WHERE Rp_profesionales.estado like :estado
es un bug?
saludos
sebas
(Sebathi)
November 9, 2009, 1:10pm
2
No se cual es el verdadero sentido de lo que hiciste…
Igualmente, no lo haria así…
Fijate de usarlo así:
MyRecord::model()->countBySql("SELECT COUNT(distinct idProfesional,estado) FROM `Rp_profesionales` WHERE Rp_profesionales.estado like :estado", array(':estado'=>$estado));
Salduos
sebas:
No se cual es el verdadero sentido de lo que hiciste…
Igualmente, no lo haria así…
Fijate de usarlo así:
MyRecord::model()->countBySql("SELECT COUNT(distinct idProfesional,estado) FROM `Rp_profesionales` WHERE Rp_profesionales.estado like :estado", array(':estado'=>$estado));
Salduos
Hola Sebas
tengo una pagina "dinamica", donde selecciono que columnas quiero ver
y tambien le pongo condiciones a esas columnas
uso distinct porque segun las columnas que se seleccionan puede haber datos duplicados
ejemplo
una tabla con dos registros
registro1
columna 1 = 1
columna 2 = 2
registro2
columna 1 = 1
columna 2 = 3
si solo quiero mostrar la columna 1, deberia mostrarme 1 solo registro con el dato "1"
el count lo necesito para el pager
hacer a mano la consulta es una opcion, pero creo que el framework debería manejarlo
ya que le estoy pasando el criterio
y el criterio va con el distinct y las columnas en cuestion
si fuera un bug, podria ponerse en /moverse a
http://www.yiiframew …11-bug-reports/
sebas
(Sebathi)
November 9, 2009, 1:56pm
4
hacer a mano la consulta es una opcion, pero creo que el framework debería manejarlo
ya que le estoy pasando el criterio
y el criterio va con el distinct y las columnas en cuestion
Agregalo como ticket porque es un error, pero la solución que qiang va a plantear es sacar el distinct en el count ya que tampoco toma en cuenta las columnas que vos pedís en la consulta…
Lo que yo haría es probar si funciona con un group by y sin el distinct…
Saludos,
sebas:
Agregalo como ticket porque es un error, pero la solución que qiang va a plantear es sacar el distinct en el count ya que tampoco toma en cuenta las columnas que vos pedís en la consulta…
Lo que yo haría es probar si funciona con un group by y sin el distinct…
Saludos,
gracias Sebas
ya puse el post en el foro de bugs
probe contando la cantidad de elementos del query y funcionó
// pruebas
$columnas=array();
$columnas[]='idProfesional';
$columnas[]='estado';
$criteria->select=$columnas;
$criteria->distinct=true;
$cantidad=count(Rp_profesionales::model()->findAll($criteria));
Yii::log('ejecuto el count', 'trace');
Yii::log($columnas[0], 'trace');
Yii::log($columnas[1], 'trace');
// pruebas
......
$pages=new CPagination($cantidad);
$pages->pageSize=self::PAGE_SIZE;
$pages->applyLimit($criteria);