[英]What's wrong with this mysql query
SELECT v.*, COUNT(a.*)
FROM vacancies AS v, applications AS a
WHERE a.vacancy_id = v.id
基本上我需要一种计算与每个空缺相对应的应用程序数量的方法。
申请有空缺ID。 因此,我想从vacancies
表中获取空位,并通过它们进行迭代,以输出具有相同vacancy_id的应用程序数量。
这是正确的方法吗? 它说我的COUNT(a.*)
位有问题。
有任何想法吗?
谢谢。
编辑
好的,所以我按组尝试了一下,现在有了这个:
SELECT v.*, COUNT(a.candidate_id)
FROM vacancies AS v, applications AS a
WHERE a.vacancy_id=v.id
GROUP BY v.title
但是它只返回一个结果,因为只有一个应用程序。 即使没有与空缺关联的应用程序,是否有任何方法可以从空缺表中返回所有内容?
您需要GROUP BY
子句。 添加类似的东西
GROUP BY vacancy.somefield
到查询。 请参阅MySQL中的COUNT函数引用
选择空缺表的所有成员,而不是编写
WHERE a.vacancy_id = v.id
你应该使用LEFT JOIN
子句:
LEFT JOIN applications ON a.vacancy_id = v.id
参见MySQL JOIN文档 。
COUNT是一个分组操作。 您最后需要使用GROUP BY。
编辑使用左连接
SELECT v。*,COUNT(a.candidate_id)FROM vacancies AS v LEFT JOIN应用程序AS a a.vacancy_id = v.id GROUP BY v.title
如果要混合汇总和名称,则需要分组
SELECT
v.id, COUNT(*)
FROM
vacancies AS v,
applications AS a
WHERE
a.vacancy_id=v.id
GROUP BY
v.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.