我有
InjID
(PK)和Name
Tid
(参考)表示InjId
(表1)和Name
ID
(参考)表示InjID
(表1)和Name
表2和表3之间没有任何联系。
我有这样的数据:
表1
________________
InjID Name
----------------
1 xxxx
2 bbbb
3 cccc
4 yyyy
表2
--------------
TID Name
--------------
1 A3434
1 R5678
2 G6789
和表3
-------------
ID Name
-------------
2 89T
2 78P
3 66J
我想要这样的结果:
--------------------------
injid Table1-name Table2-name table3-name
--------------------------------------------
1 xxxx A3434 null
1 xxxx R5678 null
2 bbbb G6789 89T
2 bbbb null 78P
3 cccc null 66J
4 yyyy null null
答案 0 :(得分:2)
我想你只想要一个OUTER JOIN
:
select t1.injid, t1.name, t2.name, t3.name
from table1 t1
left join table2 t2 on t1.InjID = t2.tid
left join table3 t3 on t1.InjID = t3.id
执行如下:
SQL>select * from table1;
InjID name
=========== ==========
1 xxxx
2 bbbb
3 cccc
4 yyyy
4 rows found
SQL>select * from table2;
TID name
=========== ==========
1 A3434
1 R5678
2 G6789
3 rows found
SQL>select * from table3;
ID name
=========== ==========
2 89T
2 78P
3 66J
3 rows found
SQL>select t1.injid, t1.name, t2.name, t3.name
SQL&from table1 t1
SQL& left join table2 t2 on t1.InjID = t2.tid
SQL& left join table3 t3 on t1.InjID = t3.id;
InjID name name name
=========== ========== ========== ==========
1 xxxx A3434 -
1 xxxx R5678 -
2 bbbb G6789 89T
2 bbbb G6789 78P
3 cccc - 66J
4 yyyy - -
6 rows found
使用空值。够好吗?