好的,在此SQL语句中,我的脑细胞以惊人的速度融化了。不是我的数据库,但我的任务是提取数据。所以这就是我要处理的...
是医疗数据。我们有一个数据库,其中所有人员都列在一个表中,包括患者和医生。每个人都有唯一的PersonID
。让我们从Person
表开始:
Person:
PersonID, PersonType, LastName, FirstName
我还有另一张桌子,是医院的住院人数。
Admissions:
AdmissionID, PersonID and PrimaryMD
主要MD与医生的“个人ID”相同。
我需要提取每个入院患者的姓氏,然后是患者的名字,但是随后我需要根据PrimaryMD标识符返回并使用该值提取患者的姓氏和名字医生让我的结果看起来像这样:
Admission | PatientLastName | PatientFirstName | DoctorLastName | DoctorFirstName
最终,我将需要提取患者和医生的地址信息,这些信息都存储在地址表中,并与人员表中的PersonID
相同,然后使用来提取医生的地址针对人员表的primarymd。但是我不知道如何针对这些相似的列在同一条语句中编写两个查询。我尝试使用别名,一些左连接和内部连接,甚至是一个联合,但我似乎无法正确处理。
任何帮助将不胜感激。
答案 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