2016-08-01 13 views
1

Ich habe ein Puzzle, wenn Sie selbst eine Tabelle beitreten. Ich kann es einfach nicht verstehen.Oracle Self Join und Verknüpfung mit einer anderen Tabelle

Zum Beispiel habe ich eine Tabelle Mitarbeiter mit allen Mitarbeiterdatensätzen. Ich habe eine temporäre Tabelle mit zwei Feldern, Mitarbeiter-ID 1 und Mitarbeiter-ID 2. Diese temporäre Tabelle speichert die Beziehung zwischen zwei Mitarbeitern. (Es befindet sich in einer temporären Tabelle, da es regelmäßig aktualisiert wird).

Jetzt möchte ich beide Mitarbeiter Informationen in einer Zeile als Ausgabe angezeigt. Ich bin in der Lage, selbst beizutreten, aber wenn es darum geht, mich mit dem temporären Tisch zu verbinden, werde ich verwirrt.

Mitarbeiter Tabelle:

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 

temporäre Tabelle:

Emp_ID_1 Emp_ID_2 
111  222 
222  555 

Nun ist die Ausgabe ich versuche zu bekommen:

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 

Dies ist ein vereinfachtes Beispiel als mein tatsächliches Employee-Tabelle enthält viele zusätzliche Spalten, die für beide Mitarbeiter angezeigt werden.

Antwort

2

Selbstfügen ist nichts Magisches. Sie verbinden zwei Tabellen, die zufällig die gleiche Tabelle sind, also müssen Sie unbedingt Tabellenaliase verwenden, um zwischen ihnen zu unterscheiden. In Ihrem Fall:

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

Ich fühle mich ein bisschen albern jetzt dafür, es kompliziert zu machen. Danke für die Lösung! – user3144072

Verwandte Themen