[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