[MSSQL 2005] LEFT JOIN nie działa poprawnie?

0

Cześć, mam dwie tabele: Calendar, gdzie tabela pełni rolę kalendarza, ma w sobie wszystkie daty od początku (1900-01-01) aż do 2100 roku i różne przydatne informacje dotyczące konkretnych dni.

Mam też drugą tabelę(nazwijmy ją DWR), która załóżmy, że ma taką strukturę:

startDate - datetime
employeeID - bigint

I teraz załóżmy, że w tabeli DWR nie ma rekordów dla dni 1 i 2 sierpnia 2009.

A chcę uzyskać następujące złączenie:

Data           |    employeeID    
--------------------------------------------
2009-08-01    |    null
2009-08-02    |    null
2009-08-03    |    1

więc piszę tak:

select cal.Date as data, dwr.employeeID
from calendar cal
left join dwr on dwr.startDate = cal.Date
where (dwr.employeeID = 8 or dwr.employeeID is null) and cal.Date>='2009-08-01' 
	and dbo.get_date(cal.Date)<='2009-08-31'
order by cal.Date

Po mojemu powinienem zobaczyć to, co chcę.
Niestety widzę tylko te dni, które zawiera tabela DWR, czyli w tym przykładzie nie widzę ani 1, ani 2 sierpnia. Co tu jest nie tak?
(jakby co to FULL join zwraca to samo)

0

Spróbuj tak (nie sprawdzałem):

select cal.Date as data, dwr.employeeID
from calendar cal
left join dwr on dwr.startDate = cal.Date and dwr.employeeID = 8
where cal.Date>='20090801' and dbo.get_date(cal.Date)<='20090831'
order by cal.Date
0

DZIAŁA!
Damn, kto by się spodziewał ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1