gpt4 book ai didi

mysql - 如何从 Rails 中的连接模型添加字段的总和?

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

如何使用 Rails 3.2 和 MySql 5.5 添加来自连接模型的字段的总和?

假设我有这样的模型:

class Account < ActiveRecord::Base
attr_accessible :number
has_many :operations
end

class Operation < ActiveRecord::Base
belongs_to :account
attr_accessible :op_type, # either 'deposit' or 'withdrawal'
:amount
end

我需要使用某些条件选择账户,并向每个账户添加该账户所有存款的总和。

这可以用这样的 SQL 来完成:

SELECT *,
IFNULL((
SELECT SUM(amount)
FROM operations
WHERE operations.account_id = accounts.id AND operations.op_type = 'deposit'
), 0) as total_deposits
FROM accounts
WHERE <condition for accounts>

(使用 LEFT JOIN 是实现相同结果的另一种方法。)

我如何使用 Rails 做到这一点?

我想要这样的东西:

accounts = Account.where(<mycondition>). join(???). sum(???)  # What should be here?
accounts.each do |a|
puts "Account #{a.number} has deposited #{a.total_deposits} total."
end

最佳答案

尝试 Operation.joins(:account).where(<mycondition>).sum(:amount)

正在求和的字段amountoperations table ;所以事件记录查询将在 Operation 上模型也是如此。 mycondition应定义为包括属于特定帐户的操作。

关于mysql - 如何从 Rails 中的连接模型添加字段的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455031/

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