我有以下表格,其中的条目可能如下所示:
Table: sessions
ID | CREATED_AT | UPDATED_AT | USER_ID | GROUP_ID
---|-------------------------|-------------------------|---------|----------
27 | 2014-07-01 23:02:16 | 2014-07-01 23:03:18 | 1 | 1
28 | 2014-07-02 16:55:25 | 2014-07-02 17:31:40 | 1 | 2
29 | 2014-07-07 20:31:13 | 2014-07-07 20:34:17 | 1 | 3
Table: groups
ID | NAME | CREATED_AT | UPDATED_AT
---|-------------------|-------------------------|------------------------
1 | Marching | 2013-12-17 19:45:28 | 2013-12-17 19:45:28
2 | Reaching | 2014-02-07 17:29:59 | 2014-02-07 17:29:59
3 | Picking | 2014-03-11 21:38:56 | 2014-03-11 21:38:56
我在Rails中有以下查询:
Session.joins(:group).select('groups.name').where(:user_id => 1).group('sessions.group_id').count
返回以下键和值:
=> {2=>7, 1=>3, 3=>1} (The "key" is the group_id and the "value"
is the # of times it occurs).
我的问题是:而不是返回" id"作为关键,我可以返回groups.name
吗?看起来像这样:
=> {"Reaching"=>7, "Marching"=>3, "Picking"=>1}
如果没有,我是否需要根据每个group_id
进行循环并重新查询?
非常感谢。
答案 0 :(得分:2)
如果您在模型中设置了所有内容,这应该可以使用。
data = Group.joins(:sessions).select('name, count(*) as occurrence_count').where('sessions.user_id = ?', 1).group('groups.name')
然后您可以像这样访问它
data.first.occurrence_count