2009-08-10 79 views
0

我試圖拿出一個Access查詢,相當於該Oracle查詢條件加入

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計數,但在訪問這些行丟失。什麼是訪問語法,以包括在課程中與行中沒有匹配的行?

回答

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

你是否有機會在連接列中使用浮點值(日期是Access中的浮點數)?浮點比較並不總是完全匹配,因爲四捨五入和表示問題(甚至認爲它們在查詢中完全相同的日期打印出來)。

+0

不,不怕。 – stimms 2009-08-10 20:51:40