我有两个名为doctor
和patient
这是我的doctor
表
这是我的patient
表
首先,我想检索医生ID列表以及为每位医生预约一次或多次预约的次数
我可以使用以下查询
来完成Select d.doctor_id, count(p.patient_id)
from patient p, doctor d
where d.doctor_id=p.registered_with
group by d.doctor_id;
结果:
但是现在我需要修改以前的查询以包括任何没有约会的医生(例如:身份证号为51的医生没有任何约会。我想将他包括在上述结果中)
我该怎么做?
PS:如果标题有误导性,有人请为我重新纠正答案 0 :(得分:2)
你在做implicit join
您需要使用left join
作为
Select
d.doctor_id,
coalesce(count(p.patient_id),0) as `patient_count`
from doctor d
left join patient p on d.doctor_id=p.registered_with
group by d.doctor_id;
答案 1 :(得分:1)
您可以使用right outer join
Select d.doctor_id, count(p.patient_id)
from patient p right outer join doctor d
on d.doctor_id=p.registered_with
group by d.doctor_id;
答案 2 :(得分:0)
我无权发表评论...... 基本上这是 abhik-chakraborty
的轻微变化解决方案 select
d.doctor_id,
isnull(count(patient_id),0) no_of_appointments
from doctor d
left outer join patient p
on
p.registered_with = d.doctor_id
group by d.doctor_id;