我正在使用sql查询来执行以下操作:
对于每个项目,检索项目编号,项目名称,从事该项目的员工人数。
这是我到目前为止的内容:
select pno, pname,
count(select fname from
employee inner join works_on
on employee.ssn=works_on.essn
inner join project
on works_on.pno=project.pno)
as num_emp from project
这给了我这个错误:
1064-您的SQL语法有误;检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行“从employee.ssn = works_on.essn inn的员工内部加入works_on中选择fname”附近使用
我假设这意味着我无法将select语句放入count函数中,但是我看不到如何执行此操作
附件是我的架构
我会这样做,将您希望员工计数的项目详细信息分组:
SELECT
pno,
pname,
COUNT(employee.snn) AS num_emp
FROM
project
INNER JOIN
works_on
ON works_on.pno = project.pno
INNER JOIN
employee
ON employee.ssn = works_on.essn
GROUP BY
pno,
pname;
编辑:
实际上,如果您要列出未分配员工的项目,则可以通过执行以下操作使原始查询更正确:
SELECT
pno,
pname,
(
SELECT
COUNT(fname)
FROM
employee
INNER JOIN
works_on
ON employee.ssn = works_on.essn
WHERE
works_on.pno = project.pno
) AS num_emp
FROM
project;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句