Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zapytanie do kalendarza rezerwacji
Forum PHP.pl > Forum > Bazy danych > MySQL
phoenix84
Witam,

Znów utknąłem na czymś, co powinno być proste i nie wiem czy nie jest, czy ja zgłupiałem smile.gif.

Opis: Mamy widok tabeli, który pokazuje numery łóżek i daty ich rezerwacji (każde łóżko może mieć nieskończoną ilość rezerwacji na nieskończoną ilość terminów, jedynym ograniczeniem jest to, że każda data może być zarezerwowana TYLKO raz dla każdego łóżka (znaczy mieścić się w przedziale data_od-data_od włącznie). Jeśli rezerwacja jest na 1 dzień to wtedy data_od i data_do są tożsame.

Cel: Jak wyciągnąć listę wolnych łóżek (id) na podstawie daty od i daty do.

Bardzo łatwo jest wyciągnąć dane o zajętych łóżkach na podstawie tych dat... no i teraz od wszystkich łóżek mógłbym odjąć te zajęte, ale może da się to jakoś ugryźć w prostszy sposób. NULL oznacza, że nie było jeszcze nigdy rezerwacji na dane łóżko, co oznacza, że jest wolne dla wszystkich dat.

Tabela rezerwacji:

  1. id | lozka_kod | data_od | data_do
  2. 3 | M4L1D |2017-01-01|2016-01-01
  3. 3 | M4L1D |2017-05-20|2018-05-22
  4. 4 | M4L1G |NULL |NULL
  5. 1 | M4P1D |2017-03-01|2017-03-03
  6. 1 | M4P1D |2017-03-13|2017-03-13
  7. 1 | M4P1D |2017-03-16|2017-03-18
  8. 2 | M4P1G |2017-03-14|2017-03-14
  9. 5 | M6F1D |NULL |NULL
  10. 6 | M6F1G |NULL |NULL


Przykłady:
Dla dat: [2017-01-01 - 2017-01-31] powinno zwrócić: [1,2,4,5,6] (bo 3 jest zarezerwowane 2017-01-01)
Dla dat: [2017-03-02 - 2017-03-02] powinno zwrócić: [2,3,4,5,6] (bo 1 jest zarezerwowane 2017-03-01 - 2017-03-03)
Dla dat: [2017-03-01 - 2017-03-31] powinno zwrócić: [3,4,5,6] (bo 1 i 2 jest zarezerwowane w marcu)

W sumie jestem na samym początku projektowania tego systemu, więc jeśli należy w ogóle podejść do tego od innej strony, to też mogę to rozważyć.

Będę wdzięczny za pomoc...

K.
phpion
Skoro jesteś w stanie wyciągnąć zajęte łóżka to negując całość warunków otrzymasz łóżka wolne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.