2016-08-01 41 views
1

自我加入表格時,我有一個難題。我似乎無法解決這個問題。Oracle自我加入並與另一個錶鏈接

例如,我有一個包含所有員工記錄的員工表。我有一個臨時表,其中包含兩個字段,即員工ID 1和員工ID 2.此臨時表存儲兩名員工之間的關係。 (它在臨時表中,因爲它經常更新)。

現在我想在一行中顯示兩個員工信息作爲輸出。我能夠自我加入,但是當涉及到與臨時表連接時,我會感到困惑。

Employee表:

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 

這是一個簡單的例子作爲我的實際員工表中有許多其他列可顯示給兩個員工。

回答

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 
+1

我覺得現在有點愚蠢,因爲它使複雜。感謝您的解決方案! – user3144072

相關問題