2012-10-24 52 views
2

我有三个表如下,加入多个表来显示3个表或多个

Table1- 
num |info 
---------- 
1 |aaaaa 
2 |bbbb 
3 |ccc 
3 |ccc 
4 |dddd 

Table2- 
num |info 
---------- 
1 |aaaaa 
3 |ccc 
4 |dddd 
5 |eeee 
6 |ffff 

Table3- 
num |info 
---------- 
1 |aaaaa 
6 |ffff 
2 |bbbb 

结果我想获得是,

Result- 
num |info num |info num |info 
----------- ----------- ---------- 
1 |aaaaa 1 |aaaaa 1 |aaaaa 
2 |bbbb NULL|NULL 2 |bbbb 
3 |ccc 3 |ccc NULL|NULL 
3 |ccc 3 |ccc NULL|NULL 
4 |dddd 4 |dddd NULL|NULL 
NULL|NULL 6 |ffff 6 |ffff 

OR

Result 2- 
num |info num |info num |info 
----------- ----------- ---------- 
1 |aaaaa 1 |aaaaa 1 |aaaaa 
2 |bbbb NULL|NULL 2 |bbbb 
3 |ccc 3 |ccc NULL|NULL 
3 |ccc 3 |ccc NULL|NULL 
4 |dddd 4 |dddd NULL|NULL 
NULL|NULL 5 |eeee NULL|NULL 
NULL|NULL 6 |ffff 6 |ffff 
的数据

如果有一种方法来检索给定结果中的任何一个将是很好的: ) 非常感谢你:) ..我试图用一个完整的加盟像这样,

SELECT * 
    FROM tbl_1 AS a 
    LEFT OUTER JOIN tbl_2 AS b ON a.num = b.num 
    UNION 
    SELECT * 
    FROM tbl_1 AS a 
    RIGHT OUTER JOIN tbl_2 AS b ON a.num = b.num 

但其良好的只有2桌,如果全加入是解决如何执行此?如果不是我怎么能从给定的三个表中得出我想要的结果?

我试过搜索,但没有人帮助完成这项任务。

和我问的问题Join multiple tables (Special condition)但它没有help..thought它可能是目前还不清楚这就是为什么我再次:)张贴

回答

0

对此问题予以@Andreas Wederbrand解决,

Full join for 3 tables

实现一个full join是我查询的解决方案。

希望它可以帮助的人谁碰到这个问题:)

1

我认为,张贴在你刚才的问题下面应该很好地工作: -

SELECT a.num numA, a.info infoA, 
    b.num numB, b.info infoB, 
    c.num numC, c.info infoC 
FROM table1 a 
    LEFT JOIN table2 b 
     ON a.num = b.num 
    LEFT JOIN table3 c 
     ON a.num = c.num 
ORDER BY a.num 
+0

也来了,它的工作原理,但在表1可是没有我的问题记录的字段它不得到显示,比如说'6 | ffff'是没有在表1 ..但我希望在结果中显示。 :) n thanx回复 –

+0

您可以使用IF Exists来解决它。 –

+0

如果你不介意,你可以告诉我如何执行此:)有点新的这个谢谢你 –