2011-12-21 53 views
0

まあ、SQLデータベースには2つのテーブルがあります。 ID列とその説明があります。1番目のテーブルのデータを選択し、2番目のテーブルのフィールドをテーブル1の2つのカラムに取得します。

第2のテーブルには、RefID1とRefID2の2つの特定の列があります。したがって、両方とも最初のテーブルのIDを持つことになります。

ここで問題は、テーブル2からSQL SELECT文を作成し、最初のテーブルの説明を数値IDの代わりにRefID1とRefID2の場所に表示することです。私は私の質問を説明する中で明らかになった

希望:)

私はあなたの回答のために非常に感謝してます。

よろしく、

Mujtaba Panjwani

+0

記述を使用してのあなたはA(tabl1)から返されたすべてのフィールドをリストアップするのですか?いずれかの方法で内部結合を見ることができます。 – Zohaib

+0

なぜこれに内部結合が必要かわかりません。 RefID1が設定され、RefID2が設定されていない場合、またはその逆の場合 –

答えて

2

この文はRefID1かRefID2のいずれかがnullである可能性が可能になります。それぞれのRefID#がnullの場合、a.descriptionまたはb.descriptionにnull値が戻されます。 RefID1とRefID2を返すからクエリを停止する唯一の方法は、明示的に代わりrefID1またはrefId2に対してA. *

SELECT A.*, B.description as description1, C.description as description2 FROM tabl1 A 
LEFT JOIN tbl2 B on a.RefID1 = B.ID 
LEFT JOIN tbl2 C on a.RefID2 = C.ID 
+0

ありがとう。それは問題を完全に解決しました。 –

1
select first.description , second.description from tableone 
left join 
(select a.id, a.description from tableone a inner join tabletwo b on a.id = b.RefID1)first 
on first.id = tableone.id 
left join 
(select a.id, a.description from tableone a inner join tabletwo b on a.id = b.RefID2)second 
on second.id = tableone.id 

または

select a.description , b.description from tabletwo left join tableone a 
    on tabletwo.RefID1 = a.id left join tableone b 
    on tabletwo.RefID2 = b.id 
+2

-1私は本当にこれが解決策だとは思わない。 –

+0

さて、あなたの最初の解決策は私のシナリオに変換することができず、実際には@ malcolm-ohareと同じである2番目の解決策が働くので、助けてくれた多くの方に感謝しています。 –

関連する問題