Sql Rails组/拥有/计数查询

Sql Rails组/拥有/计数查询,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,在这样的情况下:公司拥有许多用户 要获得拥有3个用户的公司,这将非常有效: Company.joins(:users).group("companies.id").having("COUNT(users.id)=3") 但是,对于拥有0个用户(无用户)的公司,最有效的方法是什么?因为,很明显,相同的方法不起作用(因为根据定义,joins排除了拥有0个用户的公司): 做左连接而不是内连接 Company.joins('LEFT OUTER JOIN users ON companies.id =

在这样的情况下:
公司
拥有许多
用户

要获得拥有3个用户的公司,这将非常有效:

Company.joins(:users).group("companies.id").having("COUNT(users.id)=3")
但是,对于拥有0个用户(无用户)的公司,最有效的方法是什么?因为,很明显,相同的方法不起作用(因为
根据定义,joins
排除了拥有0个用户的公司):


做左连接而不是内连接

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

我认为这可以通过使用“includes”而不是“join”来简化。比如:Company.includes(:users.group(“companys.id”)。having(“COUNT(users.id)=0”)@miguelfg:这也是我最初的想法。但是,这不起作用。您由此得到的错误是:
having子句中的未知列“users.id”
Company.joins('LEFT OUTER JOIN users ON companies.id = users.company_id')