计算给定员工在(mySQL 服务器)中有多少个部门

Counting how many departments a given employee is in (mySQL server)

所以我有一个数据库,其中包含员工、部门和用于 link 将员工和部门联系在一起的 Works 关系。我想知道每个员工在多少个部门工作,但我完全不知所措。

到目前为止我得到的是:

select count(D.name)
from employee E, department D, works W
where E.eid = W.eid and W.did = D.did

我知道问题在于它只是计算整个查询中的所有列,而不是只计算给定员工的部门数量,但我有点不知道如何限制它。

我的印象是我可以在一个查询中执行此操作,但我必须使用联接吗?

您的查询实际上看起来并不遥远,甚至可能是正确的。但是,我会在这里使用 distinct 个部门:

SELECT e.eid, COUNT(DISTINCT d.did) AS cnt
FROM employee e
LEFT JOIN works w ON w.eid = e.eid
LEFT JOIN department d ON d.did = w.did
GROUP BY e.eid;

我们在这里使用不同部门数量的原因是因为可能某个员工在同一部门有不止一次的工作经验。另请注意,我已将您的查询重写为显式连接语法(使用 LEFT JOIN)。与您使用的版本相比,这是编写连接的首选方式。