2011-05-07 51 views
1

我有兩個表:sql簡單3表連接使用同一個表?

表1
ID,姓名1

表2
ID,name2a,name2b

表2的列名name2a,並name2b是引用表1的ID。我需要創建一個基於從表1的拉兩個名稱的查詢表使用2

因此,如果表一個包含ID的:

1 Peter 
2 Paul 

和表2包含:

1 1 2 
2 2 2 

然後select語句應該給我:

Peter Paul 
Paul Paul 

我在彎附近去試圖建立THI s SQL和最好的我想出了:

SELECT table1.name AS 'name', table1.name AS 'Other name' 
FROM table1, table2 
WHERE table1.id = table2.name2a 

哪些只給了我name2a列正確。

任何幫助表示讚賞!我想我需要做一個加入,但我真的很掙扎...

回答

1

你試過用INNER JOIN嗎?

SELECT table1.name AS'name',table1.name AS'Other name' FROM table1 INNER JOIN table2 ON table1.id = table2.name2a;

對不起,如果我沒有幫助,沒有那麼好在SQL自己hehe。

+1

不要自我賣空......來這裏學習別人是學習複雜查詢和理解表之間更好關係的好方法。 – DRapp 2011-05-07 23:48:56

2
 select foo.*, t1.x, t2.y 
    join t1 on t1.id = foo.a 
    join t1 as t2 on t2.id = foo.b 

如果col a或col b爲null,請使用左連接。

1

你的問題是,你需要參考table1兩次:一次爲普通table1.name,並再次查找table2指向什麼。您可以參加多次一個表,如果你給他們的別名:

SELECT t1.name1, o.name1 
FROM table1 t1 
JOIN table2 t2 ON t1.id  = t2.name2a 
JOIN table1 o ON t2.name2b = o.id -- And JOIN back to table1 to get the name1 
5

開始你的第二臺並兩次加入到表1(分別爲不同的別名),然後從每個別名表1項目獲取的名稱字段。

select 
     T2.ID, 
     TJ1.Name1 as FirstName, 
     TJ2.Name1 as SecondName 
    from 
     Table2 t2 
     join Table1 TJ1 
      on t2.Name2a = TJ1.ID 
     join Table1 TJ2 
      on t2.Name2b = TJ2.ID