在执行自连接时,我很难理解on
语句。假设我们有以下表格:
| 雇员id|姓名|管理员ID|薪金|
| - ------|- ------|- ------|- ------|
| 1个|迈克|三个|三万五千|
| 第二章|罗伯|1个|四万五千|
| 三个|托德|零|二万五千|
| 四个|本|1个|五万五千|
| 五个|山姆|1个|六万五千|
我想执行一个自联接以返回员工姓名及其经理姓名。
当我执行以下自联接时,得到了不正确的结果:
SELECT E.name as Employee,M.name as Manager
FROM tblEmployees E
LEFT JOIN tblEmployees M
ON E.Employeeid=M.managerid
但是,当我使用下面的查询反转on
语句中的列时:
SELECT E.name as Employee,M.name as Manager
FROM tblEmployees E
LEFT JOIN tblEmployees M
ON E.managerid=M.Employeeid
我得到了正确答案。
为什么?我怎么知道在on
语句中选择哪些列?
1条答案
按热度按时间5lhxktic1#
以下是我的解释:
1.您所拥有的表的结构是每行代表公司中的一个雇员。
1.您感兴趣的是确定谁是每个员工的经理。
1.您可以通过联接表本身来发现这一点,其中查找值是经理ID(
managerid
),引用列是雇员ID(employeeid
)。1.第一个查询是错误的,因为
employeeid
列用于查找值,而managerid
列用于引用。1.若要获取需要查找的每个员工的经理,请将
managerid
列用作查找列,将employeeid
列用作引用列。希望不会太混乱!