Sql 获取左联接查询中第一个表的属性

Sql 获取左联接查询中第一个表的属性,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,考虑以下表格: 工人 工人和老板(多对多) 我怎样才能让所有的员工都和他们的老板在一起(如果一个员工有一个老板,那么除了他之外,还要加上一个空值) 为此: SELECT TOP 1000 [EmployeeName] ,workboss.bossid FROM [TestingDB].[dbo].[Worker] as workers LEFT OUTER JOIN [TestingDB].[dbo].[WorkersBosses] as workboss on workers.

考虑以下表格:

工人

工人和老板(多对多)

我怎样才能让所有的员工都和他们的老板在一起(如果一个员工有一个老板,那么除了他之外,还要加上一个空值)

为此:

SELECT TOP 1000 [EmployeeName] ,workboss.bossid
  FROM [TestingDB].[dbo].[Worker] as workers
  LEFT OUTER JOIN [TestingDB].[dbo].[WorkersBosses] as workboss
  on workers.EmployeeId = workboss.WorkerId
我把所有的员工都和他们的老板联系在一起,但是我怎么才能同时得到老板的名字(不仅仅是他的身份证)


谢谢

内部联接添加到
工作者

SELECT
    w.EmployeeName AS EmployeeName,
    wb.BossName
FROM Worker w
LEFT JOIN(
    SELECT b.WorkerId, b.BossId, w2.EmployeeName AS BossName
    FROM WorkersBoss b
    INNER JOIN Worker w2
        ON w2.EmployeeId = b.BossId 
)wb
    ON w.EmployeeId = wb.WorkerId
这也可以写成:

SELECT
    w.EmployeeName AS EmployeeName,
    w2.EmployeeName AS BossName
FROM Worker w
LEFT JOIN WorkersBosses wb
    INNER JOIN Worker w2
        ON w2.EmployeeId = wb.BossId
    ON w.EmployeeId = wb.WorkerId

您可以使用不同的别名多次加入同一个表:

SELECT w.EmployeeId,
    w.EmployeeName,
    b.EmployeeId AS BossEmployeeId,
    b.EmployeeName AS BossEmployeeName
FROM Worker w
LEFT JOIN WorkersBosses wb
    ON wb.WorkerId = w.EmployeeId
LEFT JOIN Worker b
    ON b.EmployeeId = wb.BossId