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')