ruby-on-rails Rails group/having/count查询

ohfgkhjo  于 5个月前  发布在  Ruby
关注(0)|答案(2)|浏览(86)

假设一种情况,如: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")

jw5wzhpr

jw5wzhpr1#

用左连接代替内连接。

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

字符串

q1qsirdb

q1qsirdb2#

随着Rails的不断发展,现在也可以在没有显式SQL的情况下进行公式化。
此外,使用外部连接和where on null user.id搜索没有用户的公司更容易:

Company.left_outer_joins(:users).where(users: {id: nil})

字符串

相关问题