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