【发布时间】:2011-03-29 14:35:02
【问题描述】:
我有三个表 'Employees'、'Departments' 和 'EmployeesInDepartments' “Employees”表引用“Departments”表(每个员工都必须有一个 DepartmentId)。但是,通过将条目(EmployeeId 和 DepartmentId)添加到 'EmployeeInDepartments' 表中,一个员工可以存在于多个部门中。
我目前有以下存储过程来按部门 ID 检索员工:
CREATE PROCEDURE dbo.CollectEmployeesByDepartmentId
(
@DepartmentId int,
@IsDeleted bit
)
AS
BEGIN
SELECT Employees.*
FROM Employees
WHERE ((Employees.IsDeleted = @IsDeleted )
AND ((Employees.DepartmentId = @DepartmentId)
OR (Employees.EmployeeId IN (SELECT EmployeesInDepartments.EmployeeId
FROM EmployeesInDepartments
WHERE (EmployeesInDepartments.DepartmentId = @DepartmentId)
)
)
)
)
END
如何优化此存储过程并可能使用 JOINS?
【问题讨论】:
标签: sql sql-server sql-server-2005 tsql