Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Zapytanie do kalendarza rezerwacji, Jak pobrać "odwrotny" kalendarz?
phoenix84
post
Post #1





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 22:21