在一次查询中查询同一个表两次以获得2条记录

Bou*_*ory 1 sql sql-server select

我正在使用SQL Server 2016,但这不是2016年的问题.这就是我想做的事情.我将拥有用户的电子邮件地址,并需要为该用户获取数据.所以这很简单:

select [firstname],[lastname],[managerid] from employees where workemail='emp@company.com'
Run Code Online (Sandbox Code Playgroud)

很直接,但请注意我拉着经理的身份.我现在需要管理员完全相同的数据,没有经理的ID:

select [firstname],[lastname] from employees where mamangerid=manager_id_from_employee_query
Run Code Online (Sandbox Code Playgroud)

您可以看到所有数据都在同一个表中.我可以在这里停下来,因为我有我的数据,但我喜欢学习并寻找更好的解决方案.如何在不必编写2个单独的SQL语句或什么是更好的解决方案的情况下实现我想要做的事情?

Xav*_*r J 5

你可以做左连接.左侧表达式将包含员工,右侧将链接到同一表中的一行并获取经理的信息(假设它存在).不要进行内部联接,因为如果缺少"经理"行,那么您将不会为该员工获得任何内容.

Select  [e].[firstname] [emp_fname]
  , [e].[lastname] [emp_lname]
  , Manager.[firstname] [mgr_fname]
  , Manager.[lastname] [mgr_lname]
From    [employees] [e]
    Left Join [employees] Manager
        On [e].[employee_id] = Manager.[managerid]
Run Code Online (Sandbox Code Playgroud)