объединение двух баз данных с двумя наборами критериев - PullRequest
0 голосов
/ 06 июня 2018

У меня есть 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

Это значительно упрощенные структуры данных, но следуетДостаточно, чтобы получить нужный мне запрос: в основном, многие пациенты в обеих базах данных одинаковы, и это то, что, однако, у них разные идентификаторы пациента, что усложняет задачу.Они имеют одинаковые уникальные идентификаторы.

Я хочу найти клиентов в 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 голосов
/ 06 июня 2018

Ваш запрос должен быть как

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...