2017-02-13 13 views
0

私は2つのテーブルを持っています。最初のテーブルはコード番号を含み、2番目のテーブルはそのコード番号に対応する名前を含む。最初のテーブルはソースコード番号とターゲットコード番号を持っています。 2番目のテーブルには、これらのコード番号が別々の行に格納されています。だから、テーブルは、私が欲しいこのSQL - 2つのソース列を1つのターゲット列に結合する

表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に2回参加することでこれを処理できます。どうして?なぜなら、Table2には2つの外部キーがあるからです。テーブルはキーで結合される必要があり、1つのテーブルに2つのキーがあるので、ソリューションはで、ほぼとなります。私が見

唯一の問題は、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 
関連する問題