使用两组标准连接两个数据库

时间:2018-06-06 17:46:33

标签: sql sql-server join ssms

我有2个数据库,我希望将其纳入一个查询。 这是结构

  

DB1

tblA
patientID     UniqueID    
23            1787S
25            0989S

tblB
patientID     ApptType       ApptDate
23            1              1/1/2018
25            2              1/1/2017
  

DB2

tblC
patientID     UniqueID
3             1787S


tblD
patientID    ApptType       AppDate
3            1              2/2/2016

这是一个非常简化的数据结构,但应该足以获得我需要的查询: 基本上两个数据库中的许多患者是相同的,然而,这是因为他们具有不同的患者ID,这使得困难。它们具有相同的UniqueID。

我想在DB1中找到AppType = 1的客户。然后希望加入DB2并仅选择那些拥有AppType = 1的客户,但是,只显示那些匹配UniqueID的客户

结果看起来像:

DB1_patientID         DB2_patientID         AppType        UniqueID
23                    3                     1              1787S 

所以我只看到这个客户端,因为在两个数据库中它都匹配第一个标准 - AppType = 1,并且在两个数据库中客户端具有相同的UniqueID - 1787S

这是我尝试的但我不确定这是否正确:

Select a.patientID, c.patientID
From ((tblA a inner join DB2.tblC c on (a.UniqueID = c.UniqueID)) inner join tblB b
a.patientID = b.patientID) inner join DB2.tblD d on c.patientID = d.patientId
group by a.patientId, c.patientID
Having (b.appType = 1 and d.appType=1)

这个查询给了我结果,因为我喜欢成千上万的记录,很难验证一切是否正确。

1 个答案:

答案 0 :(得分:1)

您的查询应该像

select 
    DB1_patientID =   A.patientID,
    DB2_patientID =   C.patientID,
    AppType       =   D.ApptType
    UniqueID      =   C.uniqueid
from
tblA A
join tblB B
    on B.patientID=A.patientID
    and B.ApptType=1
join db2..tblC C
    on A.uniqueid=C.uniqueid
join db2..tblD D
    on C.patientID=D.patientID
    and D.ApptType=1