[Ror-es] ¿Cómo agrupo por más de una columna?

Andrés Cirugeda Esco andres at aspgems.com
Wed Apr 18 15:28:56 GMT 2007


Buenas.

Hace algún tiempo me pelee precisamente con este tema y la conclusión  
después de varias pruebas y de darle vueltas al código de AR es que  
en :group se espera una sola columna (o una asociación). Puedes  
ponerle más y 'cuela' en el group by (en el fondo se hace un options 
[:group].to_s), pero al montar las columnas que van en el select se  
asume que es una sola, así que no hay manera de que AR te devuelva al  
sum y más de una columna 'agrupada'.
Si quieres echarle una ojeada (igual ves más cosas que yo y resulta  
que se puede parchear fácilmente), el montaje está en active_record/ 
calculations.rb

Saludos

El 17/04/2007, a las 6:45, Jean Droguett escribió:

> Hola
>
> ¿Cómo puedo agrupar por más de una columna?
>
> Si agrupo sólo por una columna
>
> @horas = Actividad.sum(:acti_esfuerzo, :group => :proyecto)
>
> el sql que resulta es:
>
> SELECT sum(acti_esfuerzo) AS sum_acti_esfuerzo, proyecto_id AS
> proyecto_id FROM actividad GROUP BY proyecto_id
>
> donde puedo buscar de esta forma:
>
> for proyecto in @proyectos
>     @horas[proyecto.proyecto_id]
>
>
> pero si quiero agrupar por dos columnas:
>
> @horas = Actividad.sum(:acti_esfuerzo, :group => 'proyecto_id,
> acti_fecha')
>
> el sql que resulta es:
>
> SELECT sum(acti_esfuerzo) AS sum_acti_esfuerzo, proyecto_id,  
> acti_fecha
> AS proyecto_id_acti_fecha FROM actividad GROUP BY proyecto_id,
> acti_fecha
>
> noten el alias "proyecto_id, acti_fecha AS proyecto_id_acti_fecha"
> dentro del select
>
> donde @horas == [["2007-04-02", 14.8], ["2007-03-08", 0.5],
> ["2007-04-03", 15.3], ["2007-01-04", 6.75]]
>
> ¿Por qué en el resultado no aparece el proyecto_id?
>
> -- 
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es

--
Andrés Cirugeda Esco
ASPgems
Email: andres at aspgems dot com

'All we have to decide is what to do with the time that is given to us'.
--Gandalf.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20070418/54673a87/attachment.htm 


More information about the Ror-es mailing list