Mysql 检索联接表中没有匹配行的记录
我有两个名为Mysql 检索联接表中没有匹配行的记录,mysql,sql,count,aggregate-functions,Mysql,Sql,Count,Aggregate Functions,我有两个名为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; 结果: 但是现在我需要修改前面的查询,以包括没有预约的医生(例如:id为51的医生没有预
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;
结果:
但是现在我需要修改前面的查询,以包括没有预约的医生(例如:id为51的医生没有预约。我想在上面的结果中包括他)
我该怎么做
PS:如果标题有误导性,请有人帮我重新更正你正在做的
隐式连接
您需要使用left join
as
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;
您可以使用
右侧外部联接来执行此操作
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;
我没有评论权。。。 基本上,这是阿比克脉轮的微小变化
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;
使用外部联接,例如右联接
。例如从患者p右键加入d上的医生d。医生id=p.registered_with
这会给出一个错误,“语法错误,意外位置”