SQL 服务器加入表

SQL Server join on to tables

请帮我解决以下问题:

SQL 服务器 2012 数据库

Table 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   |
*******************************

Table 2 (T2)

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

Table 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 相关。 在 T1 中,列文本是两个表(t2 和 t3)的存储值,当文本列是 t2 的值时,fk_t3 为空(我知道设计不好),当文本列是 t3 的值时fk_t2 为空。

我知道那行不通: (returns 没有)

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

returns 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

非常感谢!

使用 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