我有两张桌子。第一个表包含代码编号,第二个表包含与该代码编号对应的名称。第一个表有源代码编号和目标代码编号。第二个表在单独的行中包含这两个代码编号。因此表格看起来像这样
表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 :(得分: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