我试图仅联接3个不同表中的选择列,但没有成功。
表1 Patient
具有我需要的以下列:
ExternalID, UserDefinedXML, ServiceSiteUid
表2 PDI
具有我需要的以下列:
Patient ID, FirstName, LastName, State
表3 ListServiceSite
有我需要的以下列:
ServiceSiteUid, Name
我需要根据公用ID列Patient
和PDI
加入ExternalID
和PatientID
,然后加入Patient
和ListServiceSite
由ServiceSiteUid
。
这是我失败的结果:
SELECT
*
FROM
(SELECT
ExternalID, UserDefinedXml, ServiceSiteUid
FROM
Patient) A
INNER JOIN
(SELECT
[Patient ID], FirstName, LastName, State
FROM
PatDemogImport) B ON A.ExternalID = B.[Patient ID]
WHERE
UserDefinedXml IS NOT NULL;
我对SQL非常陌生,因此请耐心等待!先感谢您。
答案 0 :(得分:0)
这应该做
mtcars %>%
mutate(ID=row.names(.)) %>%
select(ID) %>%
filter(!ID%in%c("Volvo 142E","Toyota Corona"))#eg Variable%in%c("x1", "x2", "x3)
答案 1 :(得分:0)
SELECT * FROM PATIENT
JOIN
PDI on PATIENT.ExternalID = PDI.ExternalID AND PATIENT.PatientID = PDI.PatientID
JOIN
ListServiceSite on ListServiceSite.ServiceSiteUid = PATIENT.ServiceSiteUid
where
UserDefinedXml IS NOT NULL;
这应该可以为您提供所需的东西。在这种情况下,不需要子选择。
基本上,您正在做的是基于列之间的关系来联接表。因此,在上文中,我们基于PDI和PATIENT的两个共享列以及ServiceSiteUid上的ListServiceSite和PATIENT将它们加入了。
请注意,当执行SELECT *时,结果中将得到重复的列(因为基本上是所有这些表中的所有列),所以我建议您指定选择的内容。即SELECT PATIENT.ExternalID, ....
最后,我建议您阅读不同类型的联接。以上只是常规联接,但还有其他类似OUTER JOIN INNER JOIN RIGHT JOIN LEFT JOIN
的联接,它们都有差异。
答案 2 :(得分:0)
SELECT Patient.*
FROM Patient INNER JOIN PatDemogImport as pdi ON
Patient.ExternalID=pdi.Patientid
Inner join ListServiceSite on
Patient.ServiceSiteUid=ListServiceSite.ServiceSiteUid
WHERE Patient.UserDefinedXml IS NOT NULL
答案 3 :(得分:0)
就这么简单吗?您需要一个内部联接,只需要指定所需的列即可。这应该给您确切的答案。这些其他答案具有相同的想法,但是它们假定表仅包含列出的列,而没有其他列。 PatientID
应该与ExternalID
相同,因此无需指定列和C.ServiceSiteUid
应该与Patient
中的相同。
SELECT A.ExternalID, A.UserDefinedXML, A.ServiceSiteUid,
B.FirstName, B.LastName, B.State,
C.Name
FROM Patient A
INNER JOIN PatDemogImport B ON B.PatientID = A.ExternalID
INNER JOIN ListServiceSite C ON C.ServiceSiteUid = A.ServiceSiteUid
WHERE A.UserDefinedXML IS NOT NULL