我有rails项目,并且我已连接到MSSQL
上的第二个远程数据库(可怕,我知道 - 但我必须将旧数据库迁移到Postgresql
上的新数据库)
我配置好了,并且有可能对SQL
数据库执行exec_query MSSQL
查询,但是当我使用LEFT OUTER JOIN
时,我得到了错误的数据
e.g。
ActiveRecord::Base.establish_connection(:some_mssql).connection.exec_query('
SELECT * FROM Members m
LEFT OUTER JOIN MemberPhysicalInfo ph
ON m.idPhysicalInfo = ph.id
LEFT OUTER JOIN Addresses ad
ON ph.registrationaddress = ad.id
WHERE (m.idphysicalinfo IS NOT NULL)
')
它会返回我需要的所有字段,但是在结果[' id']字段中,我有来自表Address
的ID(我最后加入)但不是Members
IDS。
如果我删除了加入Address
表格 - 在ID中我将获得MemberPhysicalInfo
个ID,而不是Members
个ID。问题是 - 如何避免替换id字段?
我需要加入,因为如果我将所有表分开,那么我必须:
addresses.select{|h| h['id'] = member[:address_id]}.first
传输所有数据需要大约15分钟(我在成员中有> 271_000行)
P.S。我的英语很糟糕,抱歉 - 请随时向我提出更清楚的解释。