Sql Rails查询比较表Payment中的一个列和表事务的总和

Sql Rails查询比较表Payment中的一个列和表事务的总和,sql,ruby-on-rails,Sql,Ruby On Rails,我们的数据库中有付款id、总额和交易付款id、金额表,可简化为邮寄。付款的id在交易中,如果需要,可以将它们连接在一起 下面是我们用简化的SQL得出的结果: SELECT * FROM payments a WHERE ABS(a.total) <> (SELECT SUM(d.amount) FROM transactions d WHERE a.id = d.payment_id GROUP BY d.payment_id) 我需要为上面的SQL组装一个Rails 4.2查询,

我们的数据库中有付款id、总额和交易付款id、金额表,可简化为邮寄。付款的id在交易中,如果需要,可以将它们连接在一起

下面是我们用简化的SQL得出的结果:

SELECT * FROM payments a WHERE ABS(a.total) <> (SELECT SUM(d.amount) FROM transactions d WHERE a.id = d.payment_id GROUP BY d.payment_id)
我需要为上面的SQL组装一个Rails 4.2查询,但仍然使用SELECT sumd.amount FROM transactions d,其中a.id=d.payment\u id按d.payment\u id分组


下一步我可以试试什么?

你可以这样翻译:

subquery = Transaction.where("transactions.payment_id = payments.id").group(:payment_id).select("SUM(d.amount)").to_sql

Payment.where("ABS(total) <> (#{subquery}))

你可以这样翻译:

subquery = Transaction.where("transactions.payment_id = payments.id").group(:payment_id).select("SUM(d.amount)").to_sql

Payment.where("ABS(total) <> (#{subquery}))

我不做子查询,而是将两个表连接并分组:

Payment.joins(:transactions).
        group(:id).
        having("ABS(payments.total) <> SUM(transactions.amount)")
这取决于支付和交易之间的以下关联:

Payment < ActiveRecord::Base
  has_many :transactions
end

我不做子查询,而是将两个表连接并分组:

Payment.joins(:transactions).
        group(:id).
        having("ABS(payments.total) <> SUM(transactions.amount)")
这取决于支付和交易之间的以下关联:

Payment < ActiveRecord::Base
  has_many :transactions
end

我们需要一条线。此外,还比较了付款总额和属于付款的交易总额。可能需要在子查询中使用付款id进行比较。需要在一行中全部使用。此外,还比较了付款总额和属于付款的交易总额。可能需要子查询中的付款id以进行比较。