【发布时间】:2011-11-07 00:14:53
【问题描述】:
我知道 PostgreSQL 与 MySQL 不同,在使用聚合函数时需要在 group by 子句中列出所有选定的字段,例如
Transaction.select('sum(amount), category_id').group('category_id')
很公平。但是当我尝试急切加载关联时,例如
Transaction.select('sum(amount), categories.name').includes(:category).group('categories.name')
它不起作用,因为您没有在 group by 子句中包含两个模型的所有字段。
有没有办法避免列出模型的所有字段,或者我应该考虑接受 N+1 个查询? (当我只需要 2 个时,我认为列出 30 个字段没有意义......)
【问题讨论】:
-
每个 DBMS 都需要列出 group by 中的所有字段,MySQL 是个例外。由于这种行为,它导致了许多错误。
标签: ruby-on-rails ruby ruby-on-rails-3 eager-loading rails-postgresql