尝试在需要链接三个表并匹配其中两个表中的三个字段时更新字段。
我需要通过将ID链接到TableA中的ID并通过匹配TableA中的Fname,Lname,地址字段来匹配TableC中的列表来更新TableB选项。
TableA: TableB: TableC:
ID ID
Fname Options Fname
Lname Lname
address address
我尝试了联接和选择,但无法弄清楚如何联接两个表之间的三个字段。考虑将ID字段添加到TableC,然后先从TableA更新ID字段,然后更新TableB,但仍然无法弄清楚如何匹配这三个字段。我没有得到所有结果。
select TableB.options, TableA.fname, TableA.lname from TableB inner join TableA on TableB.id = TableA.id inner join TableC on TableA.address = TableC.address where TableA.firstname=TableC.fname and TableA.lname=TableC.lname
它没有返回正确的人数(68而不是128)。
也尝试过此操作,它返回了错误的人员列表(也使用zip字段):
Select * from TableB where ID in(Select ID from TableA where Address in(Select Address from TableC) and zip in (Select Zipcode from TableC))
在进一步调查后,由于数据不匹配,一些记录将不会显示,但是对于那些应该匹配的记录,我想在TableC中更新一个新的ID字段。尝试了以下操作,但收到一条错误消息,提示我需要一个EXISTS:
update atblundeliverables set personid= (select id, firstname, lastname from tblpeople where firstname in (select firstname from atblundeliverables where street in (select addressline1 from atblundeliverables)))
答案 0 :(得分:0)
此更新应该有效。尝试“选择”,并在哪里消除空值
--Update dbo.[Link3_TableB]
-- Set Options = 'doesMATCH'
Select Options
,dbo.[Link3_TableB].*
,dbo.[Link3_TableA].*
,dbo.[Link3_TableC].*
From dbo.[Link3_TableB]
Left Join dbo.[Link3_TableA]
On dbo.[Link3_TableB].ID = dbo.[Link3_TableA].ID
Left Join dbo.[Link3_TableC]
On dbo.[Link3_TableA].Fname = dbo.[Link3_TableC].Fname
and dbo.[Link3_TableA].Lname = dbo.[Link3_TableC].Lname
and dbo.[Link3_TableA].address = dbo.[Link3_TableC].address
Where Not dbo.[Link3_TableA].ID Is Null
And Not dbo.[Link3_TableC].Fname Is Null