SQL 查询以获取具有 2 个表的员工的经理姓名(多对多)

SQL Query to get manager name for employee with 2 tables (many to many)

我正在尝试学习使用 Dapper 而不是 EF Core,因为我想先学习 SQL 的基础知识。 到目前为止,我一直在稳步学习,但现在我坚持以下内容。

我有 2 个表,EmployeesManagers
在我们公司,一位员工可以有不止一位经理。所以这就是为什么我必须为多对多关系使用 2 tables 的原因,因为经理也是员工,我只需要两个 tables.

所以在 Managers table 中,我们有 2 个外键:
ManagerId(引用回 Employees table)
EmployeeId(引用回 Employees table)
显然,经理的名字不在 table 中,因为我们应该可以从 Employees table.

中得到它

我可以编写查询以通过内部联接获取用户及其经理 ID,这很有效。

SELECT emp.EmailAddress, man.ManagerId 
FROM Employees emp 
LEFT JOIN Managers man ON emp.EmployeeId = man.EmployeeId 

到目前为止一切顺利,但是...我真正想看到的是经理的名字。我在网上看到的大多数示例大多使用 1 emp has 1 manager 查询样式,但现在在我的例子中你有很多类似的。

那么我实际上可以再次返回 Employees table 获取经理姓名的最佳解决方案是什么?

希望我的问题够清楚,谢谢你的帮助!

为了获得经理的详细信息,您需要再次加入员工。像这样:

SELECT emp.EmailAddress, man.ManagerId, manDetails.Name
FROM Employees emp 
LEFT JOIN Managers man ON emp.EmployeeId = man.EmployeeId
LEFT JOIN Employees manDetails ON man.ManagerId = manDetails.EmployeeId