![](/img/trans.png)
[英]Rails 4 ActiveRecord query join and order by a user's number of association records
[英]Query to Order Number of Records through Association
我有两个模型
class Location < ActiveRecord::Base
has_many :people, :as => :person
end
class People < ActiveRecord::Base
belongs_to :person, :polymorphic => true
end
我想运行一个Location
where子句。 然后,我想对查询进行排序,以便与之相关联的人员最多的位置是第一个,然后以降序排列。
Location.where(place: "Waffle House")#Some query attached to this, but what do I write?
如何编写此查询? 可能吗?
已解决:解决了该问题。 尽管它很hacky,但直到我可以创建SQL语句之前,它一直有效。 基本上遍历选定的位置,对每个位置的人数进行计数,并添加具有人数计数的虚拟属性,并对哈希数组进行排序。
看一下Active Record Guide中有关条件连接的部分,应该为您指明正确的方向。
http://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-the-joined-tables
尝试这个:
Location.joins("(
SELECT person_id location_id, COUNT(1) people_count
FROM people
WHERE person_type = 'Location'
GROUP BY person_id
) a ON a.location_id = locations.id"
).order("a.people_count DESC")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.