2009-08-10 3 views
0

Ich versuche, mit einer Access-Abfrage zu kommen, die zu dieser Orakel Abfrage entsprichtBedingungen auf Outer-Joins

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 

In Zugang I

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; 

In der Oracle-Version I Reihen bekommen haben mit einer Zählung von 0, aber in Access fehlen diese Zeilen. Wie lautet die Zugriffssyntax zum Einschließen von Zeilen, in denen keine Übereinstimmung in der Klasse vorhanden ist?

Antwort

2

Ich denke, dass Sie möglicherweise eine andere Bedingung zu Ihrer WHERE-Klausel hinzufügen müssen. Fügen Sie der WHERE-Klausel ein "OR Is Null" hinzu und versuchen Sie das?

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

Sind Sie zufällig in den Joinspalten Gleitkommawerte mit (Termine Punkte in Access schweben)? Fließkomma-Vergleiche stimmen aufgrund von Rundungs- und Darstellungsproblemen nicht immer exakt überein (auch wenn sie in Abfragen als exakt dasselbe Datum ausgegeben werden).

+0

Nein, Angst nicht. – stimms