显示一个表中的所有记录,只显示第二个匹配的记录,为什么左外连接不起作用?

时间:2015-10-19 14:14:51

标签: sql-server join

我们有两个表,导演和员工

Directors表包含特定Director的所有记录。

在某些情况下,董事可以负责一个或多个部门。

以下查询显示了负责三个部门的董事的示例:

select deptnum, DeptName, Empname, DirectorId from Directors where DirectorId ='9884476'


DeptNum         DeptName    EmpName         DirectorID  
750              HR          Doe, Jane      9884476 
755          Administration  Doe, Jane      9884476 
803        Veterans Affairs  Doe, Jane      9884476

董事也是员工表中的员工,如下面的示例数据所示:

 DeptNum    Department  Empname        Empnum   Email                    Zip
   750          HR     Doe, Jane       9884476  Jane.doe@yahoo.com     70612

我要做的是运行一个查询,显示Director信息以及她负责的三个部门,但下面的查询只产生一条记录HR,如下所示:

DirectorID  DeptNum Department  EmpName EmpNum           Email              Zip
9884476      750    HR           Doe, Jane    9884476   Jane.doe@yahoo.com  70612
9884476      750    HR           Doe, Jane    9884476   Jane.doe@yahoo.com  70612
9884476      750    HR           Doe, Jane    9884476   Jane.doe@yahoo.com  70612

下面的查询有什么想法吗?

select h.DirectorID,
       e.DeptNum, 
       e.Department,
       e.EmpName as EmployeeName,
       e.empnum,  
       e.Email,
       e.zip
FROM Employee e  
LEFT OUTER JOIN Directors h on e.empnum = h.directorId  
                   AND h.directorid = '9884476'
WHERE e.Password = 'T400s'

我也尝试过LEFT JOIN,但无济于事。

非常感谢您的协助。

1 个答案:

答案 0 :(得分:2)

你想要来自导演的h.DeptNum和h.DeptName而不是e表的那些。