2017-04-10 53 views
0

根据table1中两列的ID值,可以得到它们在table2中的等效值吗?用于比较两列与另一个表中的一列(并获取两个值)的SQL查询

table1看起来是这样的:

id | origin | destiny 
-- | ------ | ------- 
1 | 2  | 3 
2 | 4  | 5 

table2,像这样:

id | name 
-- | ---- 
1 | bla 
2 | asd 
3 | dfg 
4 | qwe 
5 | tle 

我想是这样的:

id | origin | destiny | nameOrigin | nameDestiny 
-- | ------ | ------- | ---------- | ----------- 
1 | 2  | 3  | asd  | dfg 
2 | 4  | 5  | qwe  | tle 

我试着做两个查询:

SELECT 
    t1.origin, 
    t1.destiny, 
    t2.name 
FROM 
    table1 t1 
INNER JOIN table2 t2 ON t1.origin = t2.id 

和:

SELECT 
    t1.origin, 
    t1.destiny, 
    t2.name as destinyName 
FROM 
    table1 t1 
INNER JOIN table2 t2 ON t1.destiny = t2.id 

但是,如果我从一个表中删除一个值时,另一个保持索引该行因此有一个未定义的弥补问题。

回答

1

你可以加入第二台两次:

SELECT  t1.id, 
      t1.origin, 
      t1.destiny, 
      o.name as nameOrigin, 
      d.name as nameDestiny 
FROM  table1 t1 
INNER JOIN table2 o ON t1.origin = o.id 
INNER JOIN table2 d ON t1.destiny = d.id 

NB:“命运”是不一样的东西“目的地”

+0

谢谢你的快速回答:) – szk42

0

你可以做一个简单的查询:

SELECT t1.id,t1.origin,t1.destiny,o.name as nameOrigin, d.name as nameDestiny 
FROM t1,t2 o, t2 d 
WHERE t1.origin=o.id AND t1.destiny=d.id 

我在这里安装SQL拨弄链接。 http://sqlfiddle.com/#!9/ecf5ae