如何在日期参数情况下使用 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)
我想用外连接连接这三个表
表 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)