Zastanawiam się w jaki sposób OPTYMALNIE zrealizować następujące założenie. Mamy tabelę gdzie trzymam spis pokoi, oraz tabele, w której trzymam informacje
nt. rezerwacji dla danego pokoju. Użytkownik przez formularz wysyła dwie daty (startową i końcową - od kiedy; do kiedy chce wynająć pokój) i teraz chciałbym pobrać listę pokoi (nazwa pokoju, opis pokoju, itd), gdzie rezerwacja będzie wolna - myślałem nad takim rozwiązaniem;
# {CZAS_START} - unixtimestamp (np. 2013-10-01) # {KONIEC_CZASU} - unixtimestamp (np. 2013-10-08) SELECT p.id AS pokoj_id, p.name, p.description FROM pokoje AS p WHERE p.id NOT IN(SELECT rez.hotel_pokoj_id FROM rezerwacje AS rez WHERE raz.start_rezerwacji >= {CZAS_START} AND raz.koniec_rezerwacji <= {KONIEC_CZASU}) AND p.country_id = 'pl'
Struktura tabel wygląda mniej więcej tak:
# pokoje id, name, description, country_id # rezerwacje id, hotel_pokoj_id, start_rezerwacji, koniec_rezerwacji, dane_kontaktowe
Chciałbym Was prosić, czy dobrze jest zbudowana LOGIKA tego podzapytania - czy warunek WHERE ma sens ?