我有一个在我的一个页面中运行的查询。它基本上通过一个交易表,连接每笔交易的付款(多对一关联),计算交易的“余额”字段(使用选择),按此排序并返回前 10 个。
它是这样的:
@high_balance_transactions = Transaction.
joins(:payments).
select(["transactions.*", "SUM(...) as balance"]).
group(:id).
having("balance < 0").
order(:balance).
limit(10)
然后,在我看来,我将它们放在一个表中并需要来自付款本身的数据,所以我最终会遇到很多查询(“N+1”问题......)。
我尝试添加.includes(:payments)
到查询中,但收到此错误:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'balance' in 'order clause'
我在 SQL 中看到 ActiveRecord 没有将我的计算字段添加到它所做的查询中的错误,但它仅在我添加includes
部分时才删除它。有什么理由吗?
如何同时使用计算字段(用于订单和拥有)并仅包含通过所有条件的记录的付款数据?
谢谢!