如何使用ActiveRecord Query方法从多个自定义表中进行选择

时间:2015-03-23 19:48:47

标签: sql ruby active-record-query

有没有办法使用ActiveRecord QueryMethods从多个自定义表中进行选择?我正在尝试使用Ruby的ActiveRecord查询方法来复制这个SQL查询。

select employee.emplid, address.location
from (....) employee, (....) address
where employee.emplid = address.emplid

我可以成功获得员工的第一个查询,但是当我尝试添加地址部分时,一切都出错了。我试过了

self.select(employee.emplid, address.location).from(...., 'employee').from(...., 'address')

但是它会导致标识符无效错误。我应该从不同的角度思考这个问题吗?

编辑:包含的代码

def self.find_info(login)
  self.select('employee.emplid, address.location').from(
    self.select('emplid, effdt, login').from(
      self.select('emplid, login, effdt, lead(emplid, 1) over (order by effdt desc) prev').
      from('ps_employees').
      where('ps_employees.emplid=(?)', login)
    ).where('emplid != prev or prev IS NULL'), 'employee')
end

我犹豫是否要将代码包含在from block中,因为我认为这有点无关紧要。此时代码能够执行此操作     选择employee.emplid     来自(....)员工 但我不知道在哪里继续尝试获取address.location信息。在(....)地址块内部是另一段代码,类似于雇员,它返回ps_jobs表的位置和emplid列。

1 个答案:

答案 0 :(得分:0)

我用pry测试了这个,使用sqlite3 DB:

require 'active_record'

class Employee < ActiveRecord::Base
  has_one :address
end

class Address < ActiveRecord::Base
  belongs_to :employee
end

Employee.joins(:address).select('employees.id, addresses.location')