2016-05-15 4 views
0

への参加:SQL Serverの次のような問題で私を助けてくださいテーブル

SQL Server 2012のデータベース

表1(T1)

******************************* 
| pk_Id | text | fk_t2 | fk_t3| 
******************************* 
| 1 |text1 | 1 | null| 
******************************* 
| 2 |text2 | 2 | null| 
******************************* 
| 3 |text3 | null | 1 | 
******************************* 
| 4 |text1 | null | 2 | 
******************************* 

表2(T2)

*************** 
| pk_Id | col1| 
*************** 
| 1 |5285 | 
*************** 
| 2 |6621 | 
***************  

表3(T3)

************************ 
| pk_Id | col1 | fk_t2 | 
************************ 
| 1 | text1| 1 | 
************************ 
| 2 | text2| 1 | 
************************ 
| 3 | text1| 2 | 
************************ 

は私が必要なもの: T2.Col1 T3.Col1 T1.Text

ご覧のように、T2はT3と関連し、そして、T2とT3の両方があるさT1に関連しています。は、テキスト列がt2の値であり、fk_t3がnull(私は悪い設計であることがわかります)であり、テキスト列がt3の値である場合、fk_t2はt2の値であるとき、両方のテーブル(t2とt3)ヌル。

私は動作しないことを知っている: (何も返しません)

select t2.col1, t3.col1, t1.text 
from t2 
inner join t1 on t2.pk=t1.fk_t2 
inner join t2 on t3.pl=t1.fk_t3 

t3.col1

select t2.col1, t3.col1, t1.text    
from t2 
left join t1 on t2.pk = t1.fk_t2 
left join t3 on t3.pl = t1.fk_t3 

でヌルリターンはどうもありがとうございました!

答えて

0

使用はleft join

select t1.text, 
     t2.col1, 
     t3.col1   
from t1 
left join t2 on t2.pk = t1.fk_t2 
left join t3 on t3.pl = t1.fk_t3 or t3.fk_t2 = t2.pk_Id 
+0

はあなたに感謝します!あなたのソリューション(合体)はt3.col1を返さず、単にt2.col1とtogheterを混ぜてください。私は別の襟にt2.col1とt3.col1を持っている必要があります。マビ、私は理解していない:)。私は返信でt1.text、t2.col1、t3.col1が必要です – gligom

+0

それからやります。私は答えを更新しました。しかし、それらのうちの1つはあなたの質問によればヌルになります。そして、あなたはテーブルからでも、ヌル以外の値だけを必要と思っていました。しかし、更新されたクエリは列を分離します。私が作った最初のものは –

+0

でした。結果ではt3.col1はすべてnullです。 – gligom

関連する問題