2014-11-03 117 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(這很棒),但沒有包含關於這三個表之間關係的詳細信息以及你想要完成的內容。

相關問題