2017-02-13 77 views
0

我有兩個表。第一個表格包含代碼編號,第二個表格包含與該代碼編號對應的名稱。第一個表格有一個源代碼和一個目標代碼。第二個表格在不同的行中包含這兩個代碼。因此,表看起來像這樣SQL - 將兩個源列連接到一個目標列

表1

|Source_code|Target_code| 
|253  |568  | 

表2

|Code|Name | 
|253 |John | 
|568 |Steve| 

我想這樣的結果:

|source_code|name |target_code|name | 
|253  |John |568  |Steve| 

我在加入這兩個表兩次這樣做單個查詢,如下所示:

select A.source_code, B.name, A.target_code, C.name 
from table1 A 
join table2 B on A.source_code = B.code 
join table2 C on A.target_code = C.code 

這看起來不是處理此查詢的最佳方式。有一個更好的方法嗎?

+0

您正在使用哪些DBMS? Postgres的?甲骨文? –

+2

看起來很好。 – jarlh

+0

除了你需要加入Table2的代碼而不是名字:P – xQbert

回答

0

兩次加入表2是處理這個問題的方法。爲什麼?因爲你在Table1中有兩個到Table2的外鍵。由於桌子應該連接到鑰匙上,並且您有兩個鑰匙到一個桌子,您的解決方案是幾乎合適。

我看到的唯一問題是您應該加入table2的代碼不是名稱。

SELECT A.source_code, B.name, A.target_code, C.name 
FROM table1 A 
INNER JOIN table2 B 
    on A.source_code = B.Code 
INNER JOIN table2 C 
    on A.target_code = C.code