簡體   English   中英

檢索連接表中沒有匹配行的記錄

[英]Retrieve records with no matching rows in joined table

我有兩張名為doctorpatient桌子

這是我的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:如果標題有誤導性,請有人為我重新糾正

你正在進行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;

你可以用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;

我沒有評論...基本上這是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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM