首页 > 解决方案 > 查询从 Table2 中获取 Supervisor,同时显示 Table1 中的信息

问题描述

我有两个表,Table1 和 Table2。

Table1 具有员工编号和其他属性,例如名字和姓氏。表 2 有员工编号和相应的主管员工编号。

所有姓名,包括主管的姓名都在表 1 中。

我想编写一个查询以将主管名称添加到我从 Table1 查询的项目列表中。做这个的最好方式是什么?

我的 SQL 示例如下:

Select EmplNo, LastName, FirstName
      From Table1
      Where LastName Between "Apple" and "Orange"
      Order by LastName

表1数据示例:

EmplNo LastName FirstName Salary
12345  Apple    John      $50,000
23456  Brown    Mary      $51,000
34567  Golden   Frank     $72,000
89012  Holland  Maggie   $100,000

表2数据示例:

EmplNo SupNo
12345  34567
23456  34567
34567  89012

当前结果:

EmplNo LastName FirstName Salary
12345  Apple    John      $50,000
12345  Apple    John      $50,000
23456  Brown    Mary      $51,000
34567  Golden   Frank     $72,000

我需要看到的是:

EmplNo LastName FirstName Supervisor
12345  Apple    John      Frank Golden
23456  Brown    Mary      Frank Golden
34567  Golden   Frank     Maggie Holland
89012  Holland  Maggie    NULL

请让我知道完成这项工作的最佳方法。

标签: sql-server

解决方案


您需要从 Table1 加入到 Table2 才能找到每个员工的主管。然后你需要再次加入到 Table1 以获取主管的名称。

select emp.EmplNo
     , emp.LastName
     , emp.FirstName
     , sup.FirstName + ' ' + sup.LastName as Supervisor
from Table1 emp
left join Table2 t2 on emp.EmplNo = t2.EmplNo
left join Table1 sup on t2.SupNo = sup.EmplNo

推荐阅读