2017-05-08 5 views
1

私は、医師のIDと与えられたすべての処方箋の総数で私を返すレコードを取得しようとしました。SQL oracle:別のテーブルに見つからないレコードを表示する

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

この声明を使用して、医師の処方箋が少なくとも1つある限り、この情報を受け取ることができます。これは私の結果は

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 
+1

結合は 'left join'でなければなりません。 –

答えて

3

のカウントまず持つレコードに表示されますように表示したいです古い結合構文は使用しないでください。適切なJOIN構文を使用してください。

ここでは、LEFT JOINが必要です。これは、最初のテーブルのすべてと2番目のテーブルの一致するレコードのすべてを提供します。一致しないレコードの場合は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; 
+1

'count(pr.DID)'で十分でしょう。あなたが現在持っているものであれば、 'null'もカウントされるので結果は不正確になります。 –

+0

ありがとう!また、一致しないレコードに '1 'を与える​​ことに気付きました。指摘してくれてありがとう。 – Utsav

関連する問題