【问题标题】:Rails group/having/count queryRails 组/拥有/计数查询
【发布时间】:2014-05-06 11:18:38
【问题描述】:

给定这样的情况: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")

【问题讨论】:

    标签: sql ruby-on-rails activerecord


    【解决方案1】:

    使用 LEFT JOIN 而不是 INNER JOIN。

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

    【讨论】:

    • 我认为这可以通过使用'includes'而不是'joins'来简化。喜欢:Company.includes(:users).group("companies.id").having("COUNT(users.id)=0")
    • @miguelfg :这也是我最初的想法。但是不,这不起作用。你得到的错误是:Unknown column 'users.id' in 'having clause'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2015-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多