如何使用外部加入与日期参数情况

时间:2015-09-17 16:18:49

标签: sql oracle oracle-sqldeveloper

我想将这三个表与外连接

连接起来

表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

1 个答案:

答案 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)