Oracle Self Join和另一个表的链接

时间:2016-08-01 07:10:14

标签: sql oracle select join

我自己加入一张桌子时有一个难题。我似乎无法解决这个问题。

例如,我有一个包含所有员工记录的员工表。我有一个临时表,其中包含两个字段,员工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显示的其他列。

1 个答案:

答案 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