【问题标题】:How to join tables to get only the last record of has-many association?如何连接表以仅获取 has-many 关联的最后一条记录?
【发布时间】:2016-02-16 19:14:04
【问题描述】:

我有两个模型:Company 和 Transaction(具有多关系)。事务模型具有balance 属性。我有一个加入模型的查询:

scope :joined_transactions, (lambda do
  select('transactions.balance as current_balance')
  .joins('LEFT OUTER JOIN transactions ON transactions.company_id = companies.id')
end)

但是,我只想在此查询中包含最后一笔交易。因此Company.joined_transactions.first.current_balance == Company.first.transactions.last.balance 应该为真。

【问题讨论】:

  • 唯一清楚你在谈论 Ruby on Rails 和 ActiveRecord 的地方是在你的标签中。
  • 这就是标签的用途

标签: ruby-on-rails activerecord


【解决方案1】:

子查询.joins('left join transactions t on t.company_id = companies.id AND t.id = (SELECT MAX(id) FROM transactions WHERE transactions.company_id = t.company_id)')

【讨论】:

    【解决方案2】:

    我相信这个问题已经解决了很多次了。您可以使用subquerydouble join 来完成。

    如果这对您不起作用,请添加有关您当前案例的更多信息

    【讨论】:

    • 我意识到他的意图并不清楚,除了他的标签,但这些都不是 ActiveRecord 解决方案。
    • 你很少发现计算机科学中有一个问题没有被多次解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多