1

我目前有 2 个使用 INNER JOIN 子句查询的表。我的第一个标签为部门的表相当简单,只包含 3 个字段 - deptID、deptName 和 companyID。我的第二个标签为 departmentMemberships 的表更简单,只包含 2 个字段 - deptID 和employeeID。我当前的 SQL 语句查询这两个表并返回所有部门 ID、部门名称和每个部门的员工人数。如果上述部门中没有任何员工,我的查询将不会返回部门。这是我当前的查询。

`SELECT departments.deptID, departments.deptName,
COUNT(departmentMemberships.deptID) AS employeeCount
FROM departmentMemberships
INNER JOIN departments
ON departmentMemberships.deptID = departments.deptID
WHERE departments.companyID = 1
GROUP BY departments.deptID, departments.deptName
ORDER BY departments.deptName ASC;`

请原谅我对 TSQL 的缺乏经验,但我如何更改此查询以返回所有部门,包括没有员工登记的部门?

非常感谢你

4

1 回答 1

6

如所写,将您的更改INNER JOINRIGHT OUTER JOIN. 但我更喜欢LEFT JOIN我自己;更容易遵循。IE:

SELECT departments.deptID
     , departments.deptName
     , COUNT(departmentMemberships.deptID) AS employeeCount
FROM departments
LEFT OUTER JOIN departmentMemberships
ON departmentMemberships.deptID = departments.deptID
WHERE departments.companyID = 1
GROUP BY departments.deptID, departments.deptName
ORDER BY departments.deptName ASC
于 2013-01-26T02:08:54.420 回答