![]() |
![]() |
-coCCine- |
![]()
Post
#1
|
Goście ![]() |
Cześć wszystkim!
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;
Struktura tabel wygląda mniej więcej tak:
Chciałbym Was prosić, czy dobrze jest zbudowana LOGIKA tego podzapytania - czy warunek WHERE ma sens ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko zależy od DBMS. MySQL średnio sobie poradzi z IN. Dla postgeSQL nie będzie to żadnym problemem.
Niemniej, ja bym to przerobił na inne zapytanie:
Poza tym chyba masz parametry CZAS_START i KONIEC_CZASU na odwrót. Załóżmy taką sytuację: CZAS_START: '2013-10-01' KONIEC_CZASU: '2013-10-10' rezerwacje: 1 '2013-10-01' '2013-10-07' 2 '2013-09-30' '2013-10-05' 3 '2013-09-30' '2013-10-12' 4 '2013-10-09' '2013-10-15' Wg twojego zapytania tylko pokoj 1 'się załapie' jako zajęty. A tak nie jest - każdy z nich jest zajęty w tym okresie (choć w części). Zamień WHERE na rez.start_rezerwacji >= {KONIEC_CZASU} AND rez.koniec_rezerwacji <= {CZAS_START} i zobacz, co się stanie... (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 05:29 |