我想将这三个表与外连接
连接起来表1
ID NAME
123 KING
456 KONG
表2:
ID A_DATE VALUE
123 9/1/2015 1000
123 8/1/2015 1100
123 7/1/2015 1200
456 8/1/2015 900
456 7/1/2015 800
表3:
Date
9/1/2015
查询使用:
select t1.ID, t1.NAME, t2.A_Date t2.Value
from Table1 t1, Table2 t2
where t1.ID = t2.ID(+)
and t2.A_Date = (Select Date from Table3)
当前结果:
ID NAME A_DATE VALUE
123 KING 9/1/2105 1000
这个查询只给了我共同的价值。
所需结果:
ID NAME A_DATE VALUE
123 KING 9/1/2105 1000
456 KONG NULL NULL
答案 0 :(得分:0)
您应该使用ANSI JOIN语法编写它,并将约束放在ON
子句中的第二个表中。
SELECT t1.ID, t1.NAME, t2.A_Date, t2.Value
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID = t2.ID AND t2.A_Date = (SELECT Date FROM Table3)
使用隐式联接,您需要专门针对NULL
进行测试。
select t1.ID, t1.NAME, t2.A_Date t2.Value
from Table1 t1, Table2 t2
where t1.ID = t2.ID(+)
and t2.A_Date IS NULL OR t2.A_Date = (Select Date from Table3)