SQL oracle:显示在其他表中找不到的记录

SQL oracle:显示在其他表中找不到的记录,sql,oracle,Sql,Oracle,我试着去拿一份记录,它会把医生的身份证和他们开的所有处方的总数还给我 SELECT doc.DID, COUNT(pr.DID) FROM DOCTOR doc, PRESCRIPTION pr WHERE doc.DID = pr.DID GROUP BY doc.DID; 通过使用此声明,只要医生至少开了一张处方,我就能够收到信息。这就是我的结果 DID COUNT(PR.DID)

我试着去拿一份记录,它会把医生的身份证和他们开的所有处方的总数还给我

SELECT doc.DID, COUNT(pr.DID)
FROM DOCTOR doc, PRESCRIPTION pr
WHERE doc.DID = pr.DID
GROUP BY doc.DID; 
通过使用此声明,只要医生至少开了一张处方,我就能够收到信息。这就是我的结果

DID                  COUNT(PR.DID)                                              
-------------------- -------------                                              
3292848                          1                                              
3292885                         10                                              
3293063                         10                                              
3332949                         15                                              
3332950                          2 
但我想让它显示出来,即使是以前没有开过处方的医生也会在记录中显示为0

DID                  COUNT(PR.DID)                                              
-------------------- -------------                                              
3292848                          1                                              
3292885                         10 
3293042                          0               
3293063                         10                                              
3332949                         15                                              
3332950                          2
334021                           0

首先,请避免使用旧的联接语法。使用正确的
JOIN
语法

现在,您需要一个
左联接
,它将为您提供第一个表中的所有内容以及第二个表中的匹配记录。对于不匹配的记录,您将获得
null
,您可以在
where
select
子句中使用它

SELECT doc.DID, COUNT(pr.DID)
FROM DOCTOR doc
left join
PRESCRIPTION pr
on doc.DID = pr.DID
GROUP BY doc.DID; 

连接应该是
left-join
count(pr.DID)
就足够了。使用您当前拥有的,结果将不正确,因为
null
s也将被计算。谢谢!我还意识到,对于不匹配的记录,它会给出
1
。谢谢你指出。