我的查询产生了错误的结果。有什么想法吗?

时间:2015-12-09 22:50:30

标签: sql-server

我们的工作流程始于员工提交请求。

提交此请求后,员工的ID以及他/她的经理ID,Director的ID和PersonnelManagerID将保存到数据库中。

有一个名为RequestStatus的字段,有三个选项,Pending,Complete或Cancelled。

默认情况下,RequestStatus正在等待。

RequestStatus更改为Complete后,此请求将路由到管理器。

同样,一旦经理的决定处于完成状态,该请求将被发送给执行他/她的部门的董事,并告知人事总监,以便采取最终行动。

这里涉及四个表。

包含employeeID,employeeName,EmployeeUsername和employeePassword以及其他字段名称的员工表。这些是相关的。

有DeptHead表。

此表包含DirectorID,DirectorName以及其他字段。这些是相关领域。

PersonnelManagerID人员

然后是Request表。

这是提交请求的表,它包括employeeID,managerId,DirectorID和requestStatus。

包括经理,总监和人事经理在内的所有员工都在员工的表格中作为empname和Empnum。

员工ID在Request表中保存为empID Manager的员工ID在Request表中保存为ManagerID 董事员工ID在请求表

中保存为DirectorId

人事经理employeeID在请求表

中保存为PersonneID

如果员工登录,他/她的ReqeustStatus应该是Pending,Complete或Cancelled。

现在,当我以员工身份登录时,即使数据库上没有空值,RequestStatus仍为null。

我需要在下面的查询中更改内容。

select 
 IsNull(r.mgrid,'NA') mgrid,
 IsNULL(r.RequestStatus,'NA') AS RequestStatus,
 h.deptname, 
 isNull(p.DirectorName, 'N') DirectorName, 
 IsNull(r.DirectorID,'NA') DirectorID, 
 h.DeptNum deptNumber, 
 E.DeptNum, 
 E.Department, 
 E.EmpName, 
 E.EmpID, 
 E.Password, 
 h.empname as director 
 from Employee e 
   LEFT OUTER JOIN DeptHeads h on e.EmpID = h.directorId 
   LEFT OUTER JOIN Personnel p on e.EmpID = p.EmpID 
   LEFT JOIN Request r ON r.managerID = e.EmpID OR r.DirectorID = e.EmpID 
 where e.EmpID = 'myUsername' and e.SSN = 'mypassword' order by e.department asc 

感谢您的协助。

0 个答案:

没有答案