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
但它只返回一个结果,因为只有一个应用程序。即使没有与空缺相关的申请,有没有办法从空缺表中归还一切?
答案 0 :(得分:1)
您需要GROUP BY
条款。添加类似
GROUP BY vacancy.somefield
查询。见COUNT function reference in MySQL
选择职位空缺表的所有成员,而不是写
WHERE a.vacancy_id = v.id
你应该使用LEFT JOIN
条款:
LEFT JOIN applications ON a.vacancy_id = v.id
答案 1 :(得分:1)
COUNT是一个群组操作。你需要在最后使用GROUP BY。
修改强> 使用左连接
SELECT v。*,COUNT(a.candidate_id) 来自职位空缺AS v LEFT JOIN应用程序AS a avacancy_id = v.id. GROUP BY v.title
答案 2 :(得分:0)
如果要混合聚合和名称
,则需要GROUP BY答案 3 :(得分:0)
SELECT
v.id, COUNT(*)
FROM
vacancies AS v,
applications AS a
WHERE
a.vacancy_id=v.id
GROUP BY
v.id