嗨,我不确定最好的方法,但是我已经成功运行了两个SQL查询,分别检索了我要搜索的结果。但是,我想将两个结果基本上附加/串联在一起,但是由于我对SQL相当陌生,所以我不确定使用哪种方法。我已经尝试过Union,但是由于两个表都需要相同数量的列,因此无法正常工作。还尝试了左联接,但这给了我一个普遍的语法错误(也许代表我,我还是新来的。)
第一查询
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 Workbench(如果有任何区别)。 山姆。
答案 0 :(得分:3)
您的第二次尝试是在正确的轨道上,但是缺少联接条件,因此您应该按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;
此答案假设healthPracID
是healthpractioners
中的主键或具有唯一索引。在这种情况下,我们可以按healthPracID
分组。如果没有,那么我们将不得不使用以下GROUP BY
:
GROUP BY
p.healthPracID,
p.firstName,
p.surname
答案 1 :(得分:0)
尝试以下操作:
SELECT prac.healthPracID, prac.firstName, prac.surname,
count(treat.nickname) as patients
FROM healthpractitioners as prac LEFT JOIN treatmentrecords AS treat
ON prac.healthPracID = treat.healthPracID
GROUP BY prac.healthPracID, prac.firstName, prac.surname
使用两个表中的公共字段执行LEFT JOIN
,然后对想要的列使用聚合函数COUNT
,并其余GROUP BY
中指定的其他列