Witam,
otóż piszę system wypożyczeń pewnego sprzętu i pojawił się problem przy tworzeniu rezerwacji dla danego sprzętu.
Użytkownik robiąc zamówienie (rezerwację) podaje datę rozpoczęcia oraz zakończenia zamówienia. Daty przechowuję w formacie timestamp (możliwa wymiana na inne ale wiąże się to z przebudową dużej części aplikacji). Kolejnym krokiem jest utworzenie na podstawie podanego czasu trwania zamówienia listy dostępnego sprzętu w tym czasie.
Najpierw daty:
- interesują mnie tylko dni, nie dokładne godziny. Czy ktoś odda sprzęt 09.10.2009 o 8 rano czy o 22 to nieistotne bo dostępny będzie on od 10.10.2009
- jest kilka przypadków które muszę rozpatrzyć:
+ data zamówienia zawiera się w innej dacie wypożyczenia sprzętu
+ data zamówienia obejmuje w całości datę innego wypożyczenia
+ data zamówienia jest "przecięta" przez moment rozpoczęcia lub zakończenia innego zamówienia.
Jak to sprawdzić? Chodzi o to żeby żaden przypadek nie zachodził (czyli sprzęt będzie dostępny w tym terminie).
Problem z MySQL.
1. Tabela sprzet: najważniejsze jest to że przechowuje ilość posiadanego sprzętu (ogólnie)
2. Tabela zamówienia: przechowuje czas trwania zamówienia - data start i koniec oraz jakieś pole INT wskazujące czy zamówienie jest zakończone (całość oddana) czy też nie)
3. Tabela zam_sprzet: id_zamowienia, id_sprzetu, ilość sztuk sprzętu w danym zamówieniu, tu też można dać pole typu INT czy cały sprzęt został zwrócony
4. Tabela zam_zwroty: id_zamownienia, id_sprzetu, ilość oddanych sztuk sprzętu danego typu (można zwracać partiami)
Zapytanie będzie dość skomplikowane dlatego proszę kogoś doświadczonego o pomoc (bo MySQL znam tylko podstawy):
Wydaje mi się że będzie trzeba pobrać całość danych z tabeli sprzęt (do wyświetlenia informacji o wypożyczanym typie sprzętu),
następnie dla każdego sprzętu trzeba sprawdzić czy są jakieś rekordy w tabeli zam_sprzet - jeżeli są to spawdzić w tabeli zam czas trwania istniejącego zamówienia (tu problem porównywania dat opisany wcześniej) i jeżeli się pokrywa z tym które składa użytkownik to pokazać dostępną ilość sprzętu odejmując od ilości bazowej ilość wypożczoną w innych zamówieniach oraz dodając ilość zwróconą.
To zapytanie jest jednak dla mnie zbyt skomplikowane i byłbym wdzięczny gdyby ktoś mi pomógł.