请帮助这个SQL查询

时间:2012-02-16 22:31:55

标签: sql

表:

Doctor(doctor_id, name, address, tel, specialty)

Patient(patient_id, name, numsecu, doctor_reference)

Visit(doctor, patient, date_visit)

问题是向看过每位专科医生的病人表示。

我是这样做的,但我不知道如何检查患者是否见过每一位专科医生。

select distinct p.nom, m.specialite
from patient p, visite v, medecin m
where p.patient_id = v.patient
and v.medecin = m.medecin_id
group by p.nom, m.specialite

1 个答案:

答案 0 :(得分:5)

在这里做了一点假设,“专业医生”由specialite表中的非空medecin列标识。

编辑:在主要查询中添加了加入medecin,以过滤仅访问专业医生。

SELECT p.nom
    FROM patient p
        INNER JOIN visite v
            ON p.patient_id = v.patient
        INNER JOIN medicin m
            ON v.medecin = m.medecin_id
    WHERE m.specialite IS NOT NULL
    GROUP BY p.nom
    HAVING COUNT(DISTINCT m.medecin_id) = (SELECT COUNT(*) 
                                               FROM medecin 
                                               WHERE specialite IS NOT NULL)