如何通过加入密钥ROR从多个表中检索数据

时间:2012-03-25 03:15:10

标签: ruby-on-rails-3

我正在使用ROR3为公司开发员工档案管理系统 我是ROR的新手。刚刚开始一个月前。因此在开发应用程序时遇到一些麻烦。

这些是一些表格

1-个人资料

id
service_number
first_name
last_name

2-促销活动

id
service-number
rank
date_of_rank

3- unit_allocation

id
service_number
unit
date_from
date_to 

实际上,服务号码是员工的唯一ID号。所以我想使用服务号

加入表格

这是我用来生成一些信息的原始sql。但是我不能在ROR中做到这一点

SELECT promotions.service_number, profiles.first_name, promotions.rank, 
promotions.date_of_rank
FROM profiles, promotions
WHERE promotions.service_number = profiles.service_number
AND promotions.id = (SELECT max(id) FROM promotions WHERE service_number = 3975)

在个人资料索引页面中,我想显示个人资料详情以及当前职位和员工单位

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您想使用JOINS而不是Associations,那么您会看到这个:

Profiles.joins("JOIN promotions ON promotions.service_number = profiles.service_number")

然后展开它以模拟您的查询:

@promotions_id = Promotions.select("max(id)").where(:service_number => 3975)

Profiles.select("promotions.service_number, profiles.first_name, promotions.rank, promotions.date_of_rank").joins("JOIN promotions ON promotions.service_number = profiles.service_number").where("promotions.id = ?", @promotions_id)