我自己加入一张桌子时有一个难题。我似乎无法解决这个问题。
例如,我有一个包含所有员工记录的员工表。我有一个临时表,其中包含两个字段,员工ID 1和员工ID 2.此临时表存储两个员工之间的关系。 (它在临时表中,因为它会定期更新)。
现在我想在一行中显示两个员工信息作为输出。我能够自我加入,但是当涉及到与临时表的链接时,我感到困惑。
员工表:
Emp_ID Emp_Name Status Joined_Date
111 Jack On_Leave 01/01/2000
222 Smith Working 02/02/2000
333 Joan Working 03/03/2001
444 Emily On_Leave 04/04/2001
555 Mark Working 05/05/2002
临时表:
Emp_ID_1 Emp_ID_2
111 222
222 555
现在我想要获得的输出是:
Emp_ID_1 Emp_Name_1 Status_1 Joined_date_1 Emp_ID_2 Emp_Name_2 Status_2 Joined_date_2
111 Jack On_Leave 01/01/2000 222 Smith Working 02/02/2000
222 Smith Working 02/02/2000 555 Mark Working 05/05/2001
这是一个简化的示例,因为我的实际Employee表有两个要为Employees显示的其他列。
答案 0 :(得分:2)
自我加入并不神奇。您正在加入两个表,这两个表恰好是同一个表,因此您必须使用表别名来区分它们。在你的情况下:
SELECT e1.*, e2.*
FROM employee e1
JOIN temp_table t ON e1.emp_id = t.emp_id_1
JOIN employee e2 ON t.emp_id_2 = e2.emp_id