sql-server - 查询从 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
请让我知道完成这项工作的最佳方法。
解决方案
您需要从 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
推荐阅读
- servlets - Karaf 切换到另一个版本捆绑
- c++ - Function 的调用重载不明确
- python - 自动将散点图的标签放置在点周围,以免它们相互覆盖
- c# - 通过使用我的 Nuget 包的 VS2015 构建 .NET 项目不会复制 .config 文件
- docker - 重新启动在 Docker 容器中运行的应用程序会破坏堆栈网络
- java - 我想在 android 中生成四个不同的随机数,但它们的总数不应大于指定范围,如 0 到 69
- mysql - 我无法用 MYSQL 中的更新、设置、替换替换注册表中的部分名称
- c# - c#如何让用户选择文件夹然后输入
- r - 如何将“Bid.Price”添加到 R 上的向量中(使用 TrueFX 库)
- python - Python 3.7 中的基本计时器