外连接的条件

时间:2009-08-10 20:16:15

标签: ms-access join

我正在尝试提出一个等同于这个oracle查询的Access查询

select ledef_name, 
       count(class.EVT_PK) timesTaught 
from ingenium.ledef course, 
     ingenium.evt class 
where course.LEDEF_PK = class.EVT_LEDEFFK(+)  
  and class.EVT_STARTDT(+) > to_date('2009-01-01', 'yyyy-mm-dd') 
group by ledef_name 

在访问中我有

SELECT course.ledef_name, Count(class.EVT_PK) AS timesTaught
FROM INGENIUM_LEDEF AS course LEFT JOIN INGENIUM_EVT AS class ON course.LEDEF_PK = class.EVT_LEDEFFK
WHERE class.EVT_STARTDT>#1/1/2009#
GROUP BY course.ledef_name;

在Oracle版本中,我得到的行数为0,但在Access中,这些行丢失了。什么是包含行的访问语法,其中类在课程中与行中没有匹配?

2 个答案:

答案 0 :(得分:2)

我认为您可能需要在WHERE子句中添加另一个条件。在WHERE子句中添加“OR Is Null”并尝试吗?

SELECT course.ledef_name, Count(class.EVT_PK) AS timesTaught
FROM INGENIUM_LEDEF AS course LEFT JOIN INGENIUM_EVT AS class ON course.LEDEF_PK = 
class.EVT_LEDEFFK
WHERE class.EVT_STARTDT>#1/1/2009# OR Is Null
GROUP BY course.ledef_name;

答案 1 :(得分:1)

您是否有可能在连接列中使用浮点值(日期是Access中的浮点数)?浮点比较并不总是完全匹配,因为舍入和表示问题(甚至认为它们在查询中打印出完全相同的日期)。