Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rails group by multiple columns

i have budgets table with emptype_id and calendar_id actual_head, estimated_head

when i do Budgets.sum(:actual_head ,:group=>"emptype_id,calendar_id") i do not get the result grouped by the above two columns but only by the emptype_id

however when i check the log the sql query is right

SELECT sum(`budgets`.actual_head) AS sum_actual_head, emptype_id,calendar_id AS emptype_id_calendar_id FROM `budgets` GROUP BY emptype_id,calendar_id

has 103 rows

I wanted to iterate through each emptype_id and calendar_id to get a sum of actual_head and do some calculations on it.

like image 438
philipth Avatar asked Aug 06 '09 20:08

philipth


1 Answers

Grouping with multiple columns cannot be supported by rails. You have to use a regular find all:

budgets = Budgets.find(:all, 
                       :select => "emptype_id, calendar_id, sum(budgets.actual_head) AS sum_actual_head", 
                       :group => "emptype_id, calendar_id")

budgets.each { |budget| puts budget.sum_actual_head }
like image 147
Lawrence Pit Avatar answered Sep 22 '22 13:09

Lawrence Pit