我试图取一条记录,用医生的身份证件和他们给出的所有处方总数返回给我。
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
答案 0 :(得分:3)
首先,请避免使用旧的连接语法。使用正确的JOIN
语法。
现在你需要一个LEFT 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;