SQL语句查询同一表2次

时间:2018-08-16 15:34:21

标签: sql

好的,在此SQL语句中,我的脑细胞以惊人的速度融化了。不是我的数据库,但我的任务是提取数据。所以这就是我要处理的...

是医疗数据。我们有一个数据库,其中所有人员都列在一个表中,包括患者和医生。每个人都有唯一的PersonID。让我们从Person表开始:

Person:
PersonID, PersonType, LastName, FirstName

我还有另一张桌子,是医院的住院人数。

Admissions:
AdmissionID, PersonID and PrimaryMD 

主要MD与医生的“个人ID”相同。

我需要提取每个入院患者的姓氏,然后是患者的名字,但是随后我需要根据PrimaryMD标识符返回并使用该值提取患者的姓氏和名字医生让我的结果看起来像这样:

Admission | PatientLastName | PatientFirstName | DoctorLastName | DoctorFirstName

最终,我将需要提取患者和医生的地址信息,这些信息都存储在地址表中,并与人员表中的PersonID相同,然后使用来提取医生的地址针对人员表的primarymd。但是我不知道如何针对这些相似的列在同一条语句中编写两个查询。我尝试使用别名,一些左连接和内部连接,甚至是一个联合,但我似乎无法正确处理。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试一下:

SELECT
a.AdmissionID,
pat.LastName AS PatientLastName,
pat.FirstName AS PatientFirstName,
doc.LastName AS DoctorLastName,
doc.FirstName AS DoctorFirstName

FROM Admissions a

INNER JOIN Person pat
ON a.PersonID = pat.PersonID

INNER JOIN Person doc
ON a.PrimaryMD = doc.PersonID

要获取地址,请使用相同的步骤:

SELECT
a.AdmissionID,
pat.LastName AS PatientLastName,
pat.FirstName AS PatientFirstName,
doc.LastName AS DoctorLastName,
doc.FirstName AS DoctorFirstName

FROM Admissions a

INNER JOIN Person pat
ON a.PersonID = pat.PersonID

INNER JOIN Person doc
ON a.PrimaryMD = doc.PersonID

INNER JOIN Addresses addPat
ON pat.PersonID = addPat.PersonID

INNER JOIN Addresses addDoc
ON doc.PersonID = addDoc.PersonID