Rails:复杂的活动记录查询 - 根据兄弟姐妹的数量对子记录进行排序

时间:2016-05-17 22:40:46

标签: ruby-on-rails activerecord

http://www.trailerpuppy.com/trailers/popular

预告片属于电影。电影has_many预告片和has_many通知。我想从通知最多的电影中返回最新的预告片

trailer.rb

 def self.most_reminders_set(from_date, until_date, number_to_return)
    Trailer.joins(:movie => :notifications).
          where("movies.release_date > ?", from_date).
          where("movies.release_date < ?", until_date).
          select('trailers.*, COUNT(notifications.id) AS notifications_count').
          joins(:movie).group('trailers.id').
          order('notifications_count DESC').take(number_to_return).first(number_to_return)
end

所以基本上这个方法允许我设置一个时间帧然后它将返回前X个预告片(电影通知最多的那些)。

这个问题是我正在为同一部电影获得多个预告片。我只想为每个独特的movie_id返回一个预告片。

不确定在我的查询中将其添加到何处。

1 个答案:

答案 0 :(得分:0)

您需要子查询才能获得最新预告片。此外,我注意到您使用joins两次movies,而您不需要这样做。以下是与您的问题相关的好文章的链接:

http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/