我正在尝试可视化QueryLeads
Event
的分布。因此,计算每个事件的查询符,然后根据查询符的数量(最好是可设置的波段)对事件进行分组。我认为我可以通过以下关系来做到这一点:
Event
has_many :queries
has_many :query_leads, through: :queries
Query
belongs_to :event
has_many :query_leads
QueryLead
belongs_to :query
我可以执行加入:QueryLead.joins(:query => :event)
但是一旦我开始分组,我似乎无法对事件的ID进行分组。 QueryLead.joins(:query => :event).group('query_leads.id','query_leads.query.events_id').count
会返回PG::UndefinedTable Error - missing FROM-clause entry for table "query"
。
我能做的最好的事情似乎是:.group('query_leads.id', 'query_leads.query_id')
,这个级别太低了。
我做错了什么/你会如何解决这个问题?
答案 0 :(得分:0)
此查询应该适合您。
Event.joins(queries: :query_leads).select('events.id, COUNT( query_leads.id ) as count').group('events.id')