作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Rails 4 中加入 2 个表,以执行计数并保留连接表的一列。
模型:用户 has_many :orders
我想要的是:订单数量和最后一个订单的日期。
has_many :orders, -> { select("users.*, count(orders.id) as orders_count").group('users.id') }
select("users.*, orders.created_at, count(orders.id) as orders_count").group('users.id')
PG::GroupingError: ERROR: column "orders.created_at" must appear in the GROUP BY clause or be used in an aggregate function
select("users.*, first(orders.created_at) as most_recent, count(orders.id) as orders_count").group('users.id')
PG::UndefinedFunction: ERROR: function first(character varying) does not exist
最佳答案
以下对你有用吗?
User.joins(:orders)
.select("users.*, max(orders.created_at) as most_recent, count(orders.id) as orders_count")
.group('users.id')
max
的
order.created_at
应该给你最近订单的日期。我不认为你想要你的
select
作为
has_many
的一部分订单,因为您正在寻找用户列表,而不是订单列表。如果您想要一个返回此事件记录查询的方法,假设您将多次使用它,您可以将以下内容添加到您的
User
中。模型。
def self.with_order_info
self.joins(:orders)
.select("users.*, max(orders.created_at) as most_recent, count(orders.id) as orders_count")
.group('users.id')
end
@users = User.with_order_info
has_many :orders
关于sql - Rails 4 JOIN GROUP BY 和 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30031365/
我是一名优秀的程序员,十分优秀!