0

私はTableAとTableBのような2つのテーブルを持っています。 TableAのための同じ列に基づく結合

スキーマ:TableBのため

 UoMID 
    UoMName 

スキーマ:ここ

 ItemID 
    ItemName 
    UoMID 
    D1_UoMID 
    D2_UoMID 
    D3_UoMID 

私は、これらのテーブルAにUoMIDに基づいてテーブルやUoMID、D1_UoMID、D2_UoMIDとD3_UoMID両方に参加したいです表B。 私は、次の列を取得したい:

 ItemName, UoMName, D1_UoMName, D2_UoMName and D3_UoMName 

以上の列を盗んする方法は?対応するUoMID、D1_UoMID、D2_UoMID、およびD3_UoMIDのUoMNameを特定するにはどうすればよいですか?

答えて

3

を働く、あなたが同じテーブルに複数回参加し、参加する異なる結果を区別することができると思います。あなたが複数回同じテーブルを使用したい場合は、テーブルに別名を与える必要があり

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 

これはaliasesを使用

+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

関連する問題