gpt4 book ai didi

sql - Rails 4 "where"-query with "has_many belongs_to"-relationship, search with specific count

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:18 27 4
gpt4 key购买 nike

这应该是一个简单的查询,但我在正确使用 Rails 语法时遇到了问题。我正在使用 Rails 4.1.1 和 Postgresql(9.3)。我有一个模型用户和模型公司。 User 有一个公司,Company 有很多用户。我试图找到所有拥有 5 个以上用户的公司。

class Company < ActiveRecord::Base
has_many :users, dependent: :destroy
...

class User < ActiveRecord::Base
belongs_to :company
...

问题类似于:Find all records which have a count of an association greater than zero

如果我尝试上述类似的解决方案:

Company.joins(:users).group("company.id").having("count(users.id)>5")

它给我一个错误:

PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "company"
LINE 1: ... "users"."company_id" = "companies"."id" GROUP BY company.id...

我已经尝试了几种不同的查询来获得结果,但都没有成功。我可以使用 SQL,但它看起来很愚蠢,因为使用 ActiveRecord 应该很容易做到这一点。

感谢大家的回复:)

最佳答案

应该使用 "companies.id" 而不是 "company.id"

Company.joins(:users).group("companies.id").having("count(users.id)>5")

如果你想得到 0 个用户的公司,你必须使用 LEFT JOIN:

Company.joins('LEFT JOIN users ON companies.id = users.company_id').group("companies.id").having("count(users.id) = 0")

关于sql - Rails 4 "where"-query with "has_many belongs_to"-relationship, search with specific count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25665184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com