我正在尝试提出一个等同于这个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中,这些行丢失了。什么是包含行的访问语法,其中类在课程中与行中没有匹配?
答案 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中的浮点数)?浮点比较并不总是完全匹配,因为舍入和表示问题(甚至认为它们在查询中打印出完全相同的日期)。