[ elmagio @ 04.08.2015. 14:11 ] @
Imam dvije tablice Kalendar i sati rada.
U tablici Kalendar imam polje datum i popunjena je sa svim danima(datumima) do 2099. godine.
U tablici sati rada imam polja sifra_radnika,datum,satnica i sati.

Trebam prikazati recimo sve datume u 7. mjesecu i povezati unose na taj datum, ako nije bilo unosa za taj dan treba mi biti pratni red tj.samo se treba prikazati datum.

Code:


SELECT

Kalendar.datum AS [Kalendar datum],
stavke.datum,
stavke.sifra_radnika,
stavke.satnica

FROM 

Kalendar

LEFT OUTER JOIN [Sati rada] stavke ON

stavke.datum = Kalendar.datum
    
WHERE

kalendar.datum BETWEEN '07-01-2015' AND '07-31-2015'
AND
stavke.sifra_radnika IN ('886')

ORDER BY 
stavke.sifra_radnika,
kalendar.datum

[ Zidar @ 04.08.2015. 20:15 ] @
Probaj da prebacis uslov "AND Stavke.Sifra_radnika IN (.....). LEFT JOIN se ne ponasa dobro kad kolone is LEFT strane stavis u WHERE.
Code:


SELECT Kalendar.datum AS [Kalendar datum]
  ,stavke.datum
  ,stavke.sifra_radnika
  ,stavke.satnica
FROM Kalendar
LEFT OUTER JOIN [Sati rAda] stavke 
    ON stavke.datum = Kalendar.datum 
    AND stavke.sifra_radnika IN ( '886' ) -- ovo ogranicava LEFT JOIN na  IN (..)
WHERE Kalendar.datum BETWEEN '07-01-2015' AND '07-31-2015'
    --AND stavke.sifra_radnika IN ('886') -- ovo ne treba da bude ovde
    -- Kad koristis LEFT JOIN onda u WHERE mozes da stavis samokolone iz FROM
ORDER BY stavke.sifra_radnika
  ,Kalendar.datum;



Pazi, ako unutar IN kosistis neki SELECT, na primer IN (SELECT SifraRAdnika FROM Radnici WHERE Pogon = 'xx'), pazi dobro da taj SELECT ne vraca ni jedan NULL rekord.