Sql 根据关联的记录计数选择记录

Sql 根据关联的记录计数选择记录,sql,ruby-on-rails,ruby-on-rails-3,postgresql,rails-activerecord,Sql,Ruby On Rails,Ruby On Rails 3,Postgresql,Rails Activerecord,我有三种型号: class Picture < ActiveRecord::Base # fields: url has_one :visit end class Visit < ActiveRecord::Base # fields: total_visits belongs_to :picture end class VisitDetail < ActiveRecord::Base #fields: ip_address has_many :v

我有三种型号:

class Picture < ActiveRecord::Base
  # fields: url

  has_one :visit
end

class Visit < ActiveRecord::Base
  # fields: total_visits
  belongs_to :picture
end

class VisitDetail < ActiveRecord::Base
  #fields: ip_address
  has_many :visits
end

我的问题是,有没有更有效的方法?是否有一些查询我可以写,将不会详尽的数据库

您可以在表之间使用
联接
,并通过
visit\u details
表上的
created\u at
字段有条件地进行选择。然后获取查询返回的数组的大小:

Picture.joins(:visit => :visit_details).where('visit_details.created_at > ?', some_date)

我如何按从观看次数最多到最少的降序排列图片?是的,基于每张图片的访问次数。
Picture.joins(:visit => :visit_details).where('visit_details.created_at > ?', some_date)