简体   繁体   English

rails列由多列组成

[英]rails group by multiple columns

i have budgets table with emptype_id and calendar_id actual_head, estimated_head 我有预算表与emptype_id和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 当我做Budgets.sum(:actual_head ,:group=>"emptype_id,calendar_id")我没有得到按上述两列分组的结果,但只有emptype_id

however when i check the log the sql query is right 但是,当我检查日志时,sql查询是正确的

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 有103行

I wanted to iterate through each emptype_id and calendar_id to get a sum of actual_head and do some calculations on it. 我想遍历每个emptype_id和calendar_id以获得actual_head的总和并对其进行一些计算。

Grouping with multiple columns cannot be supported by rails. 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 }

I cheat. 我作弊。 Do :group => ["emptype_id,calendar_id"]. Do :group => ["emptype_id,calendar_id"].

Not want you nor I want, but this works at least. 不想要你,也不想要,但这至少起作用。

我不确定,请尝试:group => [:emptype_id, :calendar_id]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM