Rails组/拥有/计数查询

时间:2014-05-06 11:18:39

标签: sql ruby-on-rails activerecord

考虑到以下情况:Company has_many Users

要获得拥有3个用户的公司,这可以有效地运作:

Company.joins(:users).group("companies.id").having("COUNT(users.id)=3")

但是,获得拥有0个用户的公司(无)的最有效方法是什么?因为,显然,相同的方法不起作用(根据定义,joins排除了拥有0个用户的公司):

Company.joins(:users).group("companies.id").having("COUNT(users.id)=0")

1 个答案:

答案 0 :(得分:9)

执行LEFT JOIN而不是INNER JOIN。

Company.joins('LEFT OUTER JOIN users ON companies.id = users.company_id')