2012-01-26 25 views
1

我有表a它存儲用戶ID和他的出處和目的地的ID。在表b我有位置ID和地點的具體名稱。我想要做的是加入表格,但名稱列從表b將不得不使用兩次,因爲我想獲得2個地址。我正在嘗試閱讀MySQL,但繼續做錯了。任何幫助,將不勝感激。從MySQL中的表中選擇一列兩次

 table a 
------------------------ 
| uid | to | from | 
------------------------ 
| 1 | 1 | 2 | 
------------------------ 

    table b 
--------------- 
| lid | name | 
--------------- 
| 1 | one | 
--------------- 
| 2 | two | 
--------------- 

     /what I'm trying to achieve/ 
------------------------------------------ 
|a.uid | a.to | b.name | a.from | b.name | 
------------------------------------------ 
| 1 | 1 | one | 2 | two | 
------------------------------------------ 

回答

1

你將不得不加入表B兩次,(,B2 B1)使用as

select * 
from a join b as b1 on a.to = b1.lid 
     join b as b2 on a.from = b2.lid 

使用不同的表名,每次這樣的結果將是

-------------------------------------------- 
|a.uid | a.to | b1.name | a.from | b2.name | 
-------------------------------------------- 
| 1 | 1 | one | 2 | two  | 
-------------------------------------------- 

但你可能想要的是防止名稱衝突 - 如果你例如從PHP調用它 - 所以後來也重新命名列:

select a.*, b1.name as toName, b2.name as fromName 
... (rest of the query as above) 
+0

非常感謝,爲重命名列+1。 –

0

如果僅限於只是被兩次只是在表B中加入兩倍。

但是看起來你可以在a.from和a.to之間有任意數量的數字,在這種情況下,我建議你在兩個或多個查詢中這樣做。

一個獲取a和a之一的行以獲取b之間a.from和a.to之間的所有行。