![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 13 Dołączył: 16.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
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ł. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:22 |