SQL - 多个select语句,一列,一个查询

时间:2013-03-13 16:08:31

标签: sql select join

我有一个名为person的表,它有一个名为person_id的主键。人员表包含有关患者和医生的信息(initals,last_name等)。我还有另一个名为约会的表,其中包含doctor_id,patient_id和有关约会的信息。 doctor_id和patient_id链接到人员表中的person_id。

我需要进行一个返回医生姓名的查询(使用带有姓名缩写和last_name的concat)和患者姓名。

我尝试过使用嵌套的select语句,但没有到达任何地方..

任何信息都会很棒!

3 个答案:

答案 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