W bazie mam taką tabelę:
CREATE TABLE Reservations
(
resID integer AUTO_INCREMENT PRIMARY KEY,
resFrom timestamp,
resTo timestamp
)
I są w niej różne wpisy dotyczące rezerwacji: od jakiejś daty do jakiejś daty (godziny nie istotne).
W kodzie tworzony jest obiekt klasy 'Reservation', który ma zmienne resFrom i resTo odpowiadające nowej rezerwacji. Gdy na tym obiekcie dokonuje się metody save(), która odpowiada za zapis obiektu do bazy danych to muszę najpierw sprawdzić czy daty rezerwacji z bieżącego obiektu nie nakładają się na już zarezerwowane terminy. By to sprawdzić chcę pobrać z bazy resID tych rezerwacji, które termin podanym w obiekcie zarezerwowały wcześniej. (Jak zapytanie coś zwróci to znaczy, że termin jest zajęty). Jeszcze ważna rzecz, że jeżeli rezerwacja kończy się danego dnia to tego samego dnia może zacząć się następna.
Przykładrezerwacja 1: 10.04.2010 do 16.04.2010
rezerwacja 2: 3.04.2010 do 10.04.2010
rezerwacja 3: 18.04.2010 do 25.04.2010
Jak widać rezerwacja 2 kończy się 10.04, a rezerwacja 1 zaczyna 10.04 i jest to w porządku. Teraz stworzony został obiekt z rezerwacją od 17.04.2010 - 20.04.2010, taki termin nie może zostać zarezerwowany, bo koliduje z inną rezerwacją (z rezerwacja 3). Na podstawie danych z obiektu pobieram z bazy kolidujące z nią terminy, jak coś zostanie pobrane to znaczy, że termin jest już zajęty, jak nie zwróci to wszystko jest ok.