未检索到sql查询空数据
餐桌部 表雇员 有一个运营部门没有任何员工。因此,我相信查询也会检索到该行(图1): 部门ID=10,部门名称=Operations,员工=0 为什么没有发生未检索到sql查询空数据,sql,Sql,餐桌部 表雇员 有一个运营部门没有任何员工。因此,我相信查询也会检索到该行(图1): 部门ID=10,部门名称=Operations,员工=0 为什么没有发生 SELECT EMPLOYEE.Department_ID, DEPARTMENT.Department_Name, Count(*) AS Employees FROM EMPLOYEE right JOIN DEPARTMENT ON DEPARTMENT.Department_ID = EMPLOYEE.Department
SELECT EMPLOYEE.Department_ID, DEPARTMENT.Department_Name, Count(*) AS Employees
FROM EMPLOYEE right JOIN DEPARTMENT ON DEPARTMENT.Department_ID = EMPLOYEE.Department_ID
GROUP BY DEPARTMENT.Department_Name,.EMPLOYEE.Department_ID
默认的
联接
是一个内部联接
,它只返回两边至少有一行的行。将join
替换为left join
,以检索没有员工的部门
示例代码:
SELECT e.Department_ID
, d.Department_Name
, count(e.Employee_ID) AS Employees
FROM Department d
LEFT JOIN
Employee e
ON d.Department_ID = e.Department_ID
GROUP BY
d.Department_ID
, d.Department_Name
默认的
联接
是一个内部联接
,它只返回两边至少有一行的行。将join
替换为left join
,以检索没有员工的部门
示例代码:
SELECT e.Department_ID
, d.Department_Name
, count(e.Employee_ID) AS Employees
FROM Department d
LEFT JOIN
Employee e
ON d.Department_ID = e.Department_ID
GROUP BY
d.Department_ID
, d.Department_Name
由于您关心的查询的主要数据来自部门表,您可能需要考虑重写查询为:
SELECT DEPARTMENT.Department_ID, DEPARTMENT.Department_Name, Count(EMPLOYEE.Employee_ID) As Employees
FROM DEPARTMENT
LEFT JOIN EMPLOYEE ON EMPLOYEE.Department_ID = DEPARTMENT.Department_ID
GROUP BY DEPARTMENT.Department_ID, DEPARTMENT.Department_Name
由于您关心的查询的主要数据来自部门表,您可能需要考虑重写查询为:
SELECT DEPARTMENT.Department_ID, DEPARTMENT.Department_Name, Count(EMPLOYEE.Employee_ID) As Employees
FROM DEPARTMENT
LEFT JOIN EMPLOYEE ON EMPLOYEE.Department_ID = DEPARTMENT.Department_ID
GROUP BY DEPARTMENT.Department_ID, DEPARTMENT.Department_Name
这应该能奏效。如果您首先有
EMPLOYEE
表,您可以加入右联接
,但这不好的原因是,很快您的查询将开始混合使用左联接和右联接,这变得很难阅读,即使是经验丰富的SQL专业人员。通过坚持使用LEFT JOIN
,可以保持查询的可维护性和可理解性。(在非常罕见的情况下,RIGHT JOIN
可能会简化具有复杂优先顺序的查询,但为了避免在连接组周围添加括号,我只做了两次)
此外,我建议您对表使用别名,而不是完整的表名。当一致使用别名时,查询变得更容易扫描和理解。拼写整个表名常常会掩盖查询的其他部分。这应该可以解决问题。如果您首先有EMPLOYEE
表,您可以加入右联接
,但这不好的原因是,很快您的查询将开始混合使用左联接和右联接,这变得很难阅读,即使是经验丰富的SQL专业人员。通过坚持使用LEFT JOIN
,可以保持查询的可维护性和可理解性。(在非常罕见的情况下,RIGHT JOIN
可能会简化具有复杂优先顺序的查询,但为了避免在连接组周围添加括号,我只做了两次)
此外,我建议您对表使用别名,而不是完整的表名。当一致使用别名时,查询变得更容易扫描和理解。拼写整个表名常常会模糊查询的其他部分。我替换了它,但得到了相同的输出。我看到部门
是右边的表。尝试右连接
而不是左连接
?我尝试过,但结果是部门ID=null,部门名称=Operations,员工=1(这是不可能的),这是因为您从员工记录中检索部门ID。一个简单的解决方法是将选择员工.department\u id,…
更改为选择部门.department\u id,…
我替换了它,但得到了相同的输出,我看到部门
是右边的表格。尝试右连接
而不是左连接
?我尝试过,但结果是部门ID=null,部门名称=Operations,员工=1(这是不可能的),这是因为您从员工记录中检索部门ID。一个简单的解决方法是将选择employee.department\u id,…
更改为选择department.department\u id,…
我尝试过,但结果是department\u id=null,department\u Name=Operations,employee=1(这是不可能发生的)对-这就是本例的结果。我重新编写了您的查询,以查找我认为您正在查找的内容。我尝试过,但结果是Department_ID=null,Department_Name=Operations,Employee=1(这不可能发生),对-这就是本例的结果。我重写了你的问题,我相信你在寻找什么。