2013-10-27 268 views
0

如何連接兩個表,其中某個表的連接出現多次?將兩個表連接到更多連接到連續的同一個表

我有這兩個表:

tableA       
Name  Value     
================    
Test  001 
Car  002 
Bike  003 

tableB 
Num  T1  T2 
==================== 
f4b  001  002 
aaa  001  003 
666  002  001 

我如何加入這兩個表來獲得:

Table A+B 
Num  T1  T2 
==================== 
f4b  Test Car 
aaa  Test Bike 
666  Car  Test 

如果我使用

SELECT tableB.Num 
    ,tableA.NAME 
    ,tableA.NAME 
FROM tableB 
INNER JOIN tableA ON tableB.T1 = tableA.Value 
    OR tableB.T2 = tableA.Value 

我只是得到相同的值在所有行中。

感謝

+0

「我只是在所有行中獲得相同的值」是因爲'tableA.NAME = tableA.NAME' – geomagas

+0

@geomagas是的,這是真的,但他想要從'tableA'中引用Name, tableB',這是他可能期望自動發生的事情。 –

+1

@RaduGheorghiu:是的,那只是一個暗示。提示通常會讓我們思考。 – geomagas

回答

3

我認爲你正在尋找此查詢:

SELECT 
    tB.Num 'Num', 
    tA1.Name 'T1', 
    tA2.Name 'T2' 
FROM 
    tableB tB INNER JOIN tableA tA1 ON tB.T1 = tA1.Value 
      INNER JOIN tableA tA2 ON tB.T2 = tA2.Value 
WHERE 
    tA1.Value <> tA2.Value 

這裏是一個SQLFiddle它如何與工作原理您提供的樣本數據。

+0

非常感謝!這正是我一直在尋找的。我也需要2個相同值的組合,但是不要留下WHERE語句;) – MS1

0

沒有試過,但

SELECT tableB.Num 
    ,tableA.NAME 
    ,tableA.NAME 
FROM tableB 
    ,tableA 
WHERE tableB.T1 = tableA.Value 
    OR tableB.T2 = tableA.Value 
+0

不幸的是,這是行不通的。我得到了每行兩次顯示T1和T2的相同值 – MS1