2015-03-31 74 views
1

我有一個規範化表,其行是兩個外鍵指向小表中的主鍵。這個想法是小部件成對出現,因此規範化表有兩列:widget1和widget2。MySQL UNION/JOIN在同一列

+--------------------+ 
| widget1 | widget2 | 
+--------------------+ 
| 1 | 3  | 
| 2 | 4  | 
+--------------------+ 

每個控件都有兩列;它的主鍵和它的名字。例如

+------------+ 
| pk | name | 
+------------+ 
| 1 | Bob | 
| 2 | Joe | 
| 3 | Max | 
| 4 | Tim | 
+------------+ 

我試圖建立一個查詢來獲取其名稱對應於其它的名字,即:

+--------------------+ 
| widget1 | widget2 | 
+--------------------+ 
| Bob | Max | 
| Joe | Tim | 
+--------------------+ 

UNION荷蘭國際集團兩個SELECT語句給一個長列。我如何獲得所需的輸出? Here's the SQLFiddle.

回答

1

你希望兩個連接,而不是UNION

SELECT w1.name, w2.name 
FROM norm 
    JOIN widgets w1 ON w1.pk = norm.widget1 
    JOIN widgets w2 ON w2.pk = norm.widget2 

看到它的sqlfiddle

+0

謝謝 - 由於沒有用於w1和w2別名的「AS」,因此無法讀取第二個查詢。 – Escher 2015-03-31 17:04:28