2016-08-01 8 views
1

テーブルに自己結合すると困惑します。私はちょうどそれを解決するように見えることはできません。Oracle Self他のテーブルとの結合およびリンク

たとえば、すべての従業員レコードを持つ従業員テーブルがあります。従業員ID 1と従業員ID 2の2つのフィールドを持つ一時テーブルがあります。この一時テーブルには、2人の従業員の関係が格納されています。 (それは定期的に更新されるため、一時テーブルにあります)。

ここでは、両方の従業員情報を出力として1つの行に表示します。私は自己結合することができますが、それは一時的なテーブルとのリンクになると私は混乱する。

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

自己結合は何も魔法ではありません。あなたは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

関連する問題