(search_term) { s-6ren">
gpt4 book ai didi

ruby-on-rails - 列 "users.id"必须出现在 GROUP BY 子句中或用于聚合函数中

转载 作者:行者123 更新时间:2023-11-29 11:25:53 24 4
gpt4 key购买 nike

关系:

Item belongs to Product
Product belongs to User

项目模型范围:

  scope :search, ->(search_term) {
select('products.name, users.*, products.brand, COUNT(products.id)')
.joins(:product => :user)
.where('users.name = ? OR products.brand = ?', search_term, search_term)
.group('products.id')
}

上面的结果是下面的 SQL 语句:

SELECT products.name, users.*, products.brand, COUNT(products.id) FROM "items" 
INNER JOIN "products" ON "products"."id" = "items"."product_id"
INNER JOIN "users" ON "users"."id" = "products"."user_id"
WHERE (users.name = 'Atsuete Lipstick' OR products.brand = 'Atsuete Lipstick')
GROUP BY products.id

这里的问题是出现错误:

ActiveRecord::StatementInvalid: PG::Error: ERROR:  column "users.id" 
must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT products.name, users.*, products.brand, COUNT(product...

有什么办法可以解决这个问题?

最佳答案

从错误中可以看出,您应该尝试在 GROUP BY 子句中包含 users.id:

 .group('products.id, users.id')

关于ruby-on-rails - 列 "users.id"必须出现在 GROUP BY 子句中或用于聚合函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297083/

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