如何在日期参数情况下使用 Outer Join

How to use Outer Join with date paramter situation

我想用外连接连接这三个表

表 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

您应该使用 ANSI JOIN 语法编写此代码,并将约束放在 ON 子句中的第二个 table。

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)