【发布时间】:2015-01-27 06:40:44
【问题描述】:
我正在尝试将我的应用程序上传到 heroku,但它在此语句中给了我一个错误:
@exhibition.enrolments.select(:id).group('payment_id')
ActiveRecord::StatementInvalid (PG::GroupingError: ERROR: column "enrolments.id" 必须出现在 GROUP BY 子句中或用于聚合函数中
在 SQlite 中我没有任何错误,但在生产中我有。
问题是:我有这个:
enrolment_id | payment_id | ....
1 | 1 | ....
2 | 1 | ....
3 | 2 | ....
4 | 3 | ....
5 | 3 | ....
我想获得注册的 ID 2,3 和 4。
我也试过这个:
@exhibition.enrolments.select(:id).group('enrolment.id, payment_id')
它有效,但它只是给了我所有的条目,显然......
我阅读了很多关于此的帖子,但我没有得到解决方案...
有什么帮助吗?谢谢。
编辑:
我的意思是:
我想获取注册的 ID 2、3 和 5。
每个付款区块中具有相同 id 的最大 enrolment_id。
感谢弗兰克·海肯斯
【问题讨论】:
-
您是否尝试过搜索“必须出现在 GROUP BY 子句中或用于聚合函数中”并使用您找到的任何方法? PS:停止在一个数据库上开发并在另一个数据库上进行部署,Rails/ActiveRecord 基本上没有给你任何有用的可移植性。
-
是的,我尝试过并且仍在阅读,但我没有得到任何可能对我有用的解决方案。你是对的,但这只是我在 rails 中的第一个应用程序:/ Ty
-
"我想获得注册的 ID 2,3 和 4。"你能解释为什么这些 id 应该弹出吗?您的查询中应该有什么样的逻辑来选择这些值。我不知道 GROUP BY 应该如何工作,我错过了一些东西。
标签: ruby-on-rails postgresql heroku