使用内部联接获取不同的行
Get distinct rows using inner join
我有这个声明使用 Rails 3.2:
Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1})
它 returns 我想要的,但是有很多重复的事件。
我怎样才能只获得独特的事件?
我尝试在末尾添加 .distinct 但它 returns
#<Arel::Nodes::Distinct:0x007fc13e587800>
Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1}).group('events.id')
你可以试试这个。
event_id_query = Pick.where(result: nil,created_at: 5.days.ago..Time.now,league_id: 1).select(:event_id)
Event.where(id: event_id_query)
这将创建子查询,并且 return 仅来自数据库的不同事件。
我有这个声明使用 Rails 3.2:
Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1})
它 returns 我想要的,但是有很多重复的事件。
我怎样才能只获得独特的事件?
我尝试在末尾添加 .distinct 但它 returns
#<Arel::Nodes::Distinct:0x007fc13e587800>
Event.joins(:picks).where(picks: {result: nil,created_at: 5.days.ago..Time.now,league_id: 1}).group('events.id')
你可以试试这个。
event_id_query = Pick.where(result: nil,created_at: 5.days.ago..Time.now,league_id: 1).select(:event_id)
Event.where(id: event_id_query)
这将创建子查询,并且 return 仅来自数据库的不同事件。