SELECT 带有 correlated/nested 子查询的语句
SELECT Statement with correlated/nested Subquery
我的数据库中有两个 table,Department
和 DepartmentErrors
。
DepartmentErrors
table 包含一个名为 'Error
的列
我想 运行 关于 Department
table 的 select 声明,匹配 DepartmentError
中该部门的任何相关事件,其中Error
值匹配一个数字。然后,我想为每个部门在该结果集上附加一列,其中包含在部门错误 table 中出现了多少行与该部门 ID 和错误值匹配的行。到目前为止,这是我的代码:
SELECT DISTINCT
Department.DeptID,
Name,
Size,
Location,
(
SELECT COUNT(*)
FROM DepartmentErrors
INNER JOIN Departments ON DepartmentErrors.DeptID = Departments.DeptID
WHERE Error = 2
) AS ErrorCount
FROM Departments
INNER JOIN DepartmentErrors ON Departments.DeptID = DepartmentErrors.DeptID
WHERE DepartmentErrors.Error = 2
试试这个 -
SELECT d.DeptID,
d.Name,
d.Size,
d.Location,
e.ErrorCount
FROM Departments d
JOIN (
SELECT DeptID, ErrorCount = COUNT(*)
FROM DepartmentErrors
WHERE Error = 2
GROUP BY DeptID
) e ON d.DeptID = e.DeptID
我的数据库中有两个 table,Department
和 DepartmentErrors
。
DepartmentErrors
table 包含一个名为 'Error
我想 运行 关于 Department
table 的 select 声明,匹配 DepartmentError
中该部门的任何相关事件,其中Error
值匹配一个数字。然后,我想为每个部门在该结果集上附加一列,其中包含在部门错误 table 中出现了多少行与该部门 ID 和错误值匹配的行。到目前为止,这是我的代码:
SELECT DISTINCT
Department.DeptID,
Name,
Size,
Location,
(
SELECT COUNT(*)
FROM DepartmentErrors
INNER JOIN Departments ON DepartmentErrors.DeptID = Departments.DeptID
WHERE Error = 2
) AS ErrorCount
FROM Departments
INNER JOIN DepartmentErrors ON Departments.DeptID = DepartmentErrors.DeptID
WHERE DepartmentErrors.Error = 2
试试这个 -
SELECT d.DeptID,
d.Name,
d.Size,
d.Location,
e.ErrorCount
FROM Departments d
JOIN (
SELECT DeptID, ErrorCount = COUNT(*)
FROM DepartmentErrors
WHERE Error = 2
GROUP BY DeptID
) e ON d.DeptID = e.DeptID