有没有办法使用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列。
答案 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')