我有三个表'员工','部门'和'EmployeesInDepartments' '员工'表引用'部门'表(每个员工必须有一个DepartmentId)。但是,通过向“EmployeeInDepartments”表中添加条目(EmployeeId和DepartmentId),员工可以存在于多个部门中。SQL有条件JOIN
目前,我有以下存储过程按DepartmentID检索员工:
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?
出于好奇,JOIN有没有性能好处? – 2010-08-13 18:24:38
虽然这没有很多选票,但这是我正在寻找的答案。 – 2010-08-27 16:58:17