rails active record exec_query SQL with join如何avade替换id

时间:2016-09-18 09:25:22

标签: sql sql-server ruby ruby-on-rails-4 left-join

我有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。我的英语很糟糕,抱歉 - 请随时向我提出更清楚的解释。

0 个答案:

没有答案