Mam dwie tabele Apartment i Invoice. Invoice posiada klucz obcy do apartment. Invoice dodatkowo posiada kolumny date_from i date_to mówiące od kiedy do kiedy było to realizowane.
Chcę teraz wybrać wszystkie rekordy z apartment które nie mają żadnego rekordu invoice dotyczącego tego mieszkania. Takie mieszkanie może mieć wiele invoice(rachunków) dla różnych okresów czasowych.
Czyli przykładowo mieszkanie id1 ma dwa rachunki w marcu i kwietniu, natomiast ja chce wyszukać wszystkie mieszkania które w kwietniu nie mają rachunku. Stworzyłem takie zapytanie ale ono zwraca mi to mieszkania id1 ponieważ posiada ono w marcu i ten rekord jest w porządku. Pewnie to trzeba jakoś zsumować w podzapytaniu ale nie bardzo wiem jak.
Obecne zapytanie:
select APARTMENT.*
from APARTMENT
left Join INVOICE I on APARTMENT.ID = I.APARTMENT_ID_FK
where NOT (('2019-04-01' between i.DATE_FROM and i.DATE_TO) or ('2019-04-30' between i.DATE_FROM and i.DATE_TO))
order by i.DATE_FROM, i.DATE_TO;
baza postgres