[英]Retrieve records with no matching rows in joined table
我有兩張名為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:如果標題有誤導性,請有人為我重新糾正
你正在進行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.