SQL - 将两个源列连接到一个目标列

时间:2017-02-13 13:56:38

标签: 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

这看起来不是处理此查询的最佳方式。有更好的方法吗?

1 个答案:

答案 0 :(得分: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