我有一个名为person的表,它有一个名为person_id的主键。人员表包含有关患者和医生的信息(initals,last_name等)。我还有另一个名为约会的表,其中包含doctor_id,patient_id和有关约会的信息。 doctor_id和patient_id链接到人员表中的person_id。
我需要进行一个返回医生姓名的查询(使用带有姓名缩写和last_name的concat)和患者姓名。
我尝试过使用嵌套的select语句,但没有到达任何地方..
任何信息都会很棒!
丹
答案 0 :(得分:3)
在SQL Server中,使用+
运算符完成串联。因此,连接运算符取决于您使用的RDBMS。 (在MYSQL
中,使用CONCAT
运算符)
基本上,您需要在表person
上两次加入表appointment
,因为有两列依赖于表person
。
SELECT a.*
doc.firstName + ' ' + doc.lastName as DoctorName,
pat.firstName + ' ' + pat.lastName as PatientName
FROM appointment a
INNER JOIN person doc
ON a.person_ID = doc.doctor_ID
INNER JOIN person pat
ON a.person_ID = pat.patient_ID
要进一步了解联接,请访问以下链接:
答案 1 :(得分:3)
SELECT d.initials + ' ' + d.last_name AS 'doctor name', p. initials + ' ' + p.last_name AS 'patient name'
FROM Person p
INNER JOIN appointment a
ON p.person_id = a.patient_id
INNER JOIN Person d
ON d.person_id = a.doctor_id
答案 2 :(得分:0)
从这里开始:
select
patient.person_id,
doctor.person_id
from person as patient
left join appointment
on appointment.patient_id = patient.person_id
left join person as doctor
on doctor.person_id = appointment.doctor_id
and doctor.person_id = patient.doctor_id