2014-11-03 71 views
0

我试图用另一个数据库中另一个表的信息更新一个数据库中的表。最重要的是,我需要第三张表来建立两者之间的联系。下面是我有:基于来自另一个数据库的数据的SQL更新表

Update 
MT.dbo.[tblPatientEmployers] 
Set 
MT.dbo.[tblPatientEmployers].[PatientOccupation] = RTRIM(LTRIM(T.Field3)), 
MT.dbo.[tblPatientEmployers].[PatientEmploymentStatusCode] = RTRIM(LTRIM(T.Field4)), 
MT.dbo.[tblPatientEmployers].[PatientEmploymentFromDate] = RTRIM(LTRIM(T.Field5)), 
MT.dbo.[tblPatientEmployers].[PatientEmploymentThruDate] = RTRIM(LTRIM(T.Field6)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerPhoneNumber] = RTRIM(LTRIM(T.Field7)), 
MT.dbo.[tblPatientEmployers].[PatientNationalEmployerID] = RTRIM(LTRIM(T.Field8)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerName] = RTRIM(LTRIM(T.Field9)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerAddress1] = RTRIM(LTRIM(T.Field11)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerAddress2] = RTRIM(LTRIM(T.Field12)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerCity] = RTRIM(LTRIM(T.Field13)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerStateCode] = RTRIM(LTRIM(T.Field15)), 
MT.dbo.[tblPatientEmployers].[PatientEmployerZipCode] = RTRIM(LTRIM(T.Field16)) 
from [MT_Work].[dbo].[impHL7Xref] as T 
inner join [MT_Work].[dbo].[impHL7Xref] 
    ON MT.dbo.tblPatients.[MedicalRecordNumber] = [MT_Work].[dbo].[impHL7Xref].MRN 
WHERE T.RecordType = 'PATEMP' 

导致的错误信息: 消息4104,级别16,状态1,行20 多部分标识符“MT.dbo.tblPatients.MedicalRecordNumber”无法绑定。

+1

您没有将'tblPatients'列为您正在使用的表格。在引用它之前,您需要“加入”它。 – Siyual 2014-11-03 16:19:58

+0

该表不在您的更新或from子句中。您使用多个数据库的事实并不相关。 – 2014-11-03 16:21:09

+0

您正在使用'[MT_Work]。[dbo]。[impHL7Xref]'两次,而不是使用'MT.dbo.tblPatients'。你的3张桌子真的有关系吗? – Lamak 2014-11-03 16:21:16

回答

0

你的问题是你从来没有告诉SQL Server你的表是如何相关的。您需要FROM子句中的每个表来完成这项工作:下次您编写UPDATE语句时,请先尝试编写一个SELECT语句,以便提取所需的所有值并显示它们。这将帮助您确保您拥有正确的连接。

假设我在读你的条件吧,你要找下列内容:

UPDATE PE 
SET 
    PE.[PatientOccupation] = RTRIM(LTRIM(T.Field3)), 
    PE.[PatientEmploymentStatusCode] = RTRIM(LTRIM(T.Field4)), 
    PE.[PatientEmploymentFromDate] = RTRIM(LTRIM(T.Field5)), 
    PE.[PatientEmploymentThruDate] = RTRIM(LTRIM(T.Field6)), 
    PE.[PatientEmployerPhoneNumber] = RTRIM(LTRIM(T.Field7)), 
    PE.[PatientNationalEmployerID] = RTRIM(LTRIM(T.Field8)), 
    PE.[PatientEmployerName] = RTRIM(LTRIM(T.Field9)), 
    PE.[PatientEmployerAddress1] = RTRIM(LTRIM(T.Field11)), 
    PE.[PatientEmployerAddress2] = RTRIM(LTRIM(T.Field12)), 
    PE.[PatientEmployerCity] = RTRIM(LTRIM(T.Field13)), 
    PE.[PatientEmployerStateCode] = RTRIM(LTRIM(T.Field15)), 
    PE.[PatientEmployerZipCode] = RTRIM(LTRIM(T.Field16)) 
FROM 
    [MT_Work].[dbo].[impHL7Xref] T 
    INNER JOIN 
    MT.dbo.tblPatients P ON 
     T.MRN = P.MedicalRecordNumber 
    INNER JOIN 
    MT.dbo.tblPatientEmployers PE ON 
     P.ID = PE.PatientID 
WHERE T.RecordType = 'PATEMP' 

请,请利用这种工作方式注:我们很高兴有你的堆栈溢出,但任何新用户可以做的最好的事情是learn how to ask a good question。在你的情况中,你包含了SQL(这很棒),但没有包含关于这三个表之间关系的详细信息以及你想要完成的内容。

相关问题