嗨,我不确定最好的方式来问这个,但我已经成功运行了两个SQL查询,分别检索我正在搜索的结果。不过,我希望基本上将这两个结果附加/连接在一起,但由于我对SQL还比较陌生,所以不确定要使用什么方法。我试过Union,但这不起作用,因为两个表需要相同数量的列。也尝试了left join,但这给了我一个一般的语法错误(可能是代表我的,我还是新手)。
第一次查询

SELECT prac.healthPracID, prac.firstName, prac.surname
FROM healthpractitioners as prac

第二个查询
select count(treatmentrecords.nickname) as patients
from treatmentrecords
group by treatmentrecords.healthpracID;

或者,有人可以帮我重写这些语句,以便在一个查询中获得相同的结果。我以前也尝试过类似的方法,并做了以下工作(但它并没有产生正确的结果-似乎有相同数量的患者,所有的名字和姓氏都只是健康从业者表中的第一个,但重复了一遍):
SELECT prac.healthPracID, prac.firstName, prac.surname,
count(treatmentrecords.nickname) as patients
FROM healthpractitioners as prac, treatmentrecords
group by treatmentrecords.healthpracID;

提前谢谢,对不起,如果这已经发布之前,我很困惑,不知道如何最好的搜索它。
PS Im在Windows上运行MySQL工作台,如果这有什么区别的话。
山姆。

最佳答案

您的第二次尝试是正确的,但它缺少连接条件,而且您应该按healthpractioners#healthPracID分组。

SELECT
    p.healthPracID,
    p.firstName,
    p.surname,
    COUNT(t.healthPracID) AS num_patients
FROM healthpractioners p
LEFT JOIN treatmentrecords t
    ON p.healthPracID = t.healthPracID
GROUP BY
    p.healthPracID;

这个答案假设healthPracIDhealthpractioners中的主键,或者它有一个唯一的索引。在这种情况下,我们可以按healthPracID分组。否则,我们将不得不使用以下GROUP BY
GROUP BY
    p.healthPracID,
    p.firstName,
    p.surname

07-26 09:29