连接多个表以显示3个或更多表的数据

时间:2012-10-24 10:02:23

标签: mysql join

我有三张表如下,

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

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)这个问题,但它没有帮助......我想可能不清楚为什么我再次发帖:)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这个问题由@Andreas Wederbrand解决,

Full join for 3 tables

实施full join是我查询的解决方案。

希望对遇到此问题的人有所帮助:)