0

我有兩個表,如TableA和TableB。根據同一列加入

架構爲表A:

 UoMID 
    UoMName 

架構爲表B:

 ItemID 
    ItemName 
    UoMID 
    D1_UoMID 
    D2_UoMID 
    D3_UoMID 

在這裏,我想加入這兩種在表A和UoMID,D1_UoMID,D2_UoMID和D3_UoMID在基於UoMID表表B。 我想檢索以下欄目:

 ItemName, UoMName, D1_UoMName, D2_UoMName and D3_UoMName 

如何中檢索上面列?以及如何爲相應的UoMID,D1_UoMID,D2_UoMID和D3_UoMID標識UoMName?

回答

3

使用aliases,你可以加入到同一個表多次,區分不同的加入結果。試試這個:

SELECT 
    ItemName, 
    d0.UoMName, 
    d1.UoMName as D1_UoMName, 
    d2.UoMName as D2_UoMName, 
    d3.UoMName as D3_UoMName 
from TableB tb 
join TableA d0 on d0.UoMID = tb.UoMID 
join TableA d1 on d1.UoMID = tb.D1_UoMID 
join TableA d2 on d2.UoMID = tb.D2_UoMID 
join TableA d3 on d3.UoMID = tb.D3_UoMID; 
+0

非常感謝你...... – thevan

1
SELECT 
    b.ItemName, 
    (SELECT a1.UoMName FROM TableA a1 WHERE a1.UoMID = b.UoMID) as UoMName, 
(SELECT a2.UoMName FROM TableA a2 WHERE a2.UoMID = b.D1_UoMID) as D1_UoMName, 
(SELECT a3.UoMName FROM TableA a3 WHERE a3.UoMID = b.D1_UoMID) as D3_UoMName, 
(SELECT a4.UoMName FROM TableA a4 WHERE a4.UoMID = b.D1_UoMID) as D3_UoMName, 
FROM TableB b 

希望這個作品

+0

Yuk ...那個查詢的確會表現得很差。你不需要做子選擇! – Bohemian

2
SELECT ta.UoMName, ta1.UoMName, ta2.UoMName ta3.UoMName 
FROM TableA AS ta, TableA AS ta1, TableA AS ta2, TableA AS ta3, TableB AS tb 
WHERE ta.UoMID = tb.UoMID 
AND ta.UoMID = tb.UoMID 
AND ta1.UoMID = tb.D1_UoMID 
AND ta2.UoMID = tb.D2_UoMID 
AND ta3.UoMID = tb.D3_UoMID 

你必須給別名的表,如果你想使用同一個表不止一次。

+0

非常感謝你.... – thevan