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
这会给出一个错误,“语法错误,意外位置”