表:
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
答案 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)