【发布时间】:2016-08-02 12:48:41
【问题描述】:
我有 7 张这样的桌子
诊所
clinic_id clinic_name emailId address
诊所和护士桌之间的一对一映射
护士
nurse_id nurse_name nurse_emailid clinic_id
医生
doctor_id doctor_name doctor_email
诊所和医生之间的多对多映射
医生诊所
doctor_clinic_id doctor_id clinic_id
病人
pattient_id patient_name address
patinet 和医生诊所之间的多对多映射
医生_诊所_病人
patient_dotor_id doctor_clinic_id patient_id
医生_诊所_病人和医生_病人预约之间的一对多映射
医生_病人_预约
appointment_id appointment_time appointment_status patient_doctor_id
appointment_status 有三个值-'pending','cancelled','completed'
所以,senario 从这里开始
从nurse_id(护士表)中选择clinic_id
那么在 Clinic_id 的基础上,我要选择医生_clinic_id(医生诊所表)
那么根据doctor_clinic_id,我要选择patient_id
然后在patient_id的基础上,我想从患者表中选择患者详细信息
问题是,我只想从病人表中选择那些在状态为“待定”的预约表中有预约的病人
我做了以下工作正常的查询,从数据库中获取患者行。但我想根据预约状态过滤这个患者结果
查询
Select * from patient where patient.patient_id in
(select doctor_patient.patient_id from doctor_patient where
doctor_patient.doctor_clinic_id in
(select doctor_clinic.doctor_clinic_id from doctor_clinic where
doctor_clinic.clinic_id in
(select nurse.clinic_id from nurse where nurse_id = 6) ))
【问题讨论】:
-
这是一个复杂的模式。你有没有尝试过?
-
是的,我进行了查找患者详细信息的查询,但我不知道如何根据约会状态进行过滤
-
@TimBiegeleisen。我发布了查询。请提出任何建议。
标签: mysql