SQL 查询以获取具有 2 个表的员工的经理姓名(多对多)
SQL Query to get manager name for employee with 2 tables (many to many)
我正在尝试学习使用 Dapper 而不是 EF Core,因为我想先学习 SQL 的基础知识。
到目前为止,我一直在稳步学习,但现在我坚持以下内容。
我有 2 个表,Employees
和 Managers
。
在我们公司,一位员工可以有不止一位经理。所以这就是为什么我必须为多对多关系使用 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
我正在尝试学习使用 Dapper 而不是 EF Core,因为我想先学习 SQL 的基础知识。 到目前为止,我一直在稳步学习,但现在我坚持以下内容。
我有 2 个表,Employees
和 Managers
。
在我们公司,一位员工可以有不止一位经理。所以这就是为什么我必须为多对多关系使用 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