Rails - 连接多个表

22

我有以下模型:

class Company < ActiveRecord::Base
  has_many :price_movements
  has_many :goods_movements
end

class PriceMovement < ActiveRecord::Base
  belongs_to :company
end

class GoodsMovement < ActiveRecord::Base
   belongs_to :company
end

我正在尝试将所有内容结合成ActiveRecord形式的SQL,但由于我相对新于ROR,不确定如何处理。

select * from companies c

inner join price_movements p
on c.id = p.company_id

inner join goods_movements g
on c.id = g.company_id
and g.date = p.date

对我来说关键的问题在于第二个链接,其中货物运动日期等于价格变动日期。 有人能否建议是否有任何方法可以做到这一点?

1个回答

35
Company.joins(:price_movements,:goods_movements).where("goods_movement.date = price_movement.date")

请查看此链接,它详细解释了如何使用ActiveRecord


2
只是一个附加问题:就效率而言,由于这两个表一开始就很庞大,在 ActiveRecord 查询中需要花费8000毫秒,而相应的 SQL 查询只需3000毫秒。在 ActiveRecord 中有什么方法可以稍微提高速度吗?我在后者中使用了 ActiveRecord::Base.connection.execute()。 - mingsheng
1
如何获取公司ID为1的PriceMovement和GoodsMovement记录? - Qaiser Wali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接