Trzeba napisać zapytanie SQL dla systemu rezerwacji
Cześć!
Mam tabelę z rezerwacjami niektórych pokoi:
CREATE TABLE `booking` ( `id` int(11) NOT NULL, `room_id` int(11) DEFAULT NULL, `client_id` int(11) DEFAULT NULL, `timestamp_from` int(11) DEFAULT NULL, `timestamp_to` int(11) DEFAULT NULL, `status_id` int(11) DEFAULT NULL, `guests` int(11) DEFAULT NULL, `type` int(11) DEFAULT NULL, `tariff` int(11) DEFAULT NULL, `comment` text DEFAULT NULL, `created_by` int(11) DEFAULT NULL, `updated_by` int(11) DEFAULT NULL, `created_at` int(11) DEFAULT NULL, `updated_at` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
również tabela statusów:
CREATE TABLE `booking_status` ( `id` int(11) NOT NULL, `booking_id` int(11) DEFAULT NULL, `status` int(11) DEFAULT NULL, `created_by` int(11) DEFAULT NULL, `updated_by` int(11) DEFAULT NULL, `created_at` int(11) DEFAULT NULL, `updated_at` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Zadanie jest takie:
Potrzebuję zapytania SQL, które przyjmowałoby parametry:
- timestamp_from – czas rozpoczęcia wyszukiwania
- timestamp_to – czas zakończenia wyszukiwania
- duration – czas trwania (w sekundach)
- slot_interval – interwał slotu (w sekundach)
- by_room – czy uwzględniać pokoje
W odpowiedzi zapytanie powinno zwracać wszystkie możliwe kombinacje wolnych "slotów" do rezerwacji (wolne - to czas, na który nie ma obecnie aktywnej rezerwacji na określony pokój).
Slot to przedział czasu o długości duration, który ma czas rozpoczęcia, czas zakończenia oraz numer pokoju.
Należy pamiętać, że pokoi jest wiele i niekoniecznie jeśli istnieje wpis o rezerwacji, to na ten czas wszystkie pokoje są zajęte.
Należy również pamiętać, że rezerwacje mogą być usunięte (booking_status.status = 0), w takim przypadku uważamy, że jest to wolny czas i można generować sloty na ten czas.
I koniecznie, jeśli istnieje już aktywna rezerwacja, to sloty powinny być generowane z uwzględnieniem 30-minutowego interwału przed i po już aktywnej rezerwacji.
Parametr by_room określa, czy zwrócić konkretny pokój czy nie. Jeśli tak, to zapytanie powinno zwrócić wszystkie sloty dla wszystkich pokoi osobno. Jeśli nie, to zapytanie powinno zwrócić ogólnie wolne sloty (załóżmy, że na określony czas jest rezerwacja na jeden pokój, ale nie ma na drugi - zapytanie powinno zwrócić ten slot jako wolny)
Przykład (uwzględniając, że mamy TYLKO JEDEN pokój, a innych nie ma):
Mam dwie rezerwacje na JEDEN pokój:
1) 20.05.2024 10:00 – 20.05.2024 14:00
2) 20.05.2024 18:00 – 20.05.2024 22:00
Wprowadzam takie dane do zapytania:
timestamp_from – 20.05.2024 10:00 (oczywiście w timestampie)
timestamp_to – 20.05.2024 23:00 (oczywiście w timestampie)
duration – 7200 (2 godziny w sekundach)
slot_interval – 1800 (30 minut)
by_room – true
W odpowiedzi powinienem otrzymać taki tablicę (wszystkie daty powinny być w timestampach!!!):
room_id: 1, start: 20.05.2024 14:30, end: 20.05.2024 16:30;
room_id: 1, start: 20.05.2024 15:00, end: 20.05.2024 17:00;
room_id: 1, start: 20.05.2024 15:30, end: 20.05.2024 17:30;
Jeśli w którymkolwiek z tych przedziałów byłaby usunięta rezerwacja, nie byłaby uwzględniana!!!!
Gdybyśmy mieli więcej pokoi do dyspozycji i na nich nie było rezerwacji – dla nich byłoby wiele slotów na cały dzień.
Płatność następuje po wszystkich testach z mojej strony i wprowadzeniu poprawek przez wykonawcę.
Wykorzystywanie różnych rodzajów sztucznej inteligencji jest niedopuszczalne.
-
91 1 0 Dzień dobry! Mam ponad 20-letnie doświadczenie w tworzeniu podobnych zadań. Jestem gotowy pomóc po zapoznaniu się z strukturą tabel i specyfikacją wymagań, dla których to wszystko zostało stworzone. Wygląda na to, że według wymagań masz problem ze strukturą i brakuje pola lub kolejnej tabeli...
-
456 1 0 Dzień dobry
Bardzo dobrze znam SQL, mogę wykonać zadanie, ale będę potrzebować zrzutu bazy danych oraz informacji o rodzaju bazy danych (MySql, Sql Server, Oracle itp.)
Proszę o kontakt.
-
257 19 0 3 Dzień dobry, mam gotowy skrypt do aplikacji rezerwacyjnej, nad nim teraz pracuję, trzeba go dostosować do Twojej bazy danych, ale ogólnie jest w pełni funkcjonalny, napisany w JS, mogę napisać go w innym języku, zapytanie czystym SQL byłoby zbyt długie, sprawdzone
Skontaktuj się, ustalimy szczegóły dotyczące skryptu i odpowiem na wszystkie inne pytania
-
1328 35 1 Dzień dobry. Bardzo dobrze znam się na sql. Chciałbym zobaczyć zrzut tabeli, wezmę dane wejściowe z opisu zadania. Wykonam zapytanie i prześlę wynik.
-
2398 39 1 Dzień dobry.
Napisz do mnie, omówimy twój problem bardziej szczegółowo.
Myślę, że będę w stanie rozwiązać twój problem.
-
В состоянии проверить - в состоянии сделать. Могу себе представить, чем могут окончиться эти простейшие упражнения. Час-два, конечно, не время.
-
У вас есть заполненные таблицы?
-
А какой клиент был в комнате, где room_id = 1
20.05.2024 в 16:00 из вашего примера?
Там вроде 3 брони на это время... -
> Нужно учесть, что комнат много, и необязательно, что если существует запись про бронь, то на это время заняты все комнаты.
ну і як це знати? наприклад у вас є 4 кімнати. для 3х з них в системі немає вільних слотів для заданого інтервалу. а для 4 нічого немає. тобто фізично вона у вас є, а "в системі" (цих 2х таблицях що ви привели) вона взагалі не світиться.
то як це знати?
-
Доброго дня.
На чому написано ваш сайт? -
Aktualne zlecenia dla freelancerów w kategorii Bazy danych i SQL
Należy sprawdzić skrypty i zaktualizować dane w bazie danych postgres.Konieczne jest poprawienie skryptów SQL dla bazy Postgres. Należy sprawdzić skrypty i zaktualizować dane z zewnętrznych tabel Excel oraz między dwoma bazami (różne serwery) Postgres. Uruchamianie skryptów przez program AnyDesk Navicat. Lista danych do sprawdzenia i korekty: 1.… Bazy danych i SQL ∙ 5 godzin 22 minuty temu ∙ 18 ofert |
Potrzebny architekt Airtable do zbudowania schematu relacyjnego i nowej czystej bazy AirtablePotrzebna pomoc w przemyśleniu i zbudowaniu czystiej schemy relacyjnej dla wewnętrznego systemu operacyjnego w Airtable. Obecna baza jest już używana przez zespół, ale rozwinęła się organicznie: struktura jest częściowo płaska, część tabel/widoków jest używana aktywnie, część… Bazy danych i SQL, Aplikacje desktopowe ∙ 22 godziny 41 minut temu ∙ 8 ofert |
Platforma edukacyjna dla trenerów koszykówki + niestandardowy CMSPlatforma edukacyjna dla trenerów koszykówki + Custom CMSPrzegląd projektu Poszukujemy doświadczonego zespołu deweloperskiego lub programisty full-stack do zbudowania nowoczesnej platformy edukacyjnej dla trenerów koszykówki. Strona internetowa zapewni trenerom koszykówki dostęp… Bazy danych i SQL, Programowanie stron internetowych ∙ 1 dzień 16 godzin temu ∙ 83 oferty |
Integracja Viber w 8.3
843 PLN
Potrzebna integracja Viber w własnym CRM (1C 8.3)O firmieFirma "Domofon System" zajmuje się instalacją i serwisowaniem systemów domofonowych.Baza ponad 40 000 abonentów.Pracujemy na własnym dopracowanym systemie opartym na 1C 8.3.Szukamy specjalisty lub zespołu do… Bazy danych i SQL, Tworzenie chatbota ∙ 1 dzień 19 godzin temu ∙ 13 ofert |
Dopracowanie 1C UT 11 dla TSD Zebra (RDP): różne sygnały dźwiękowe podczas skanowania
84 PLN
Konfiguracja: 1C UT 11 Adresowy magazyn Terminal Zebra TC26 Praca przez RDP Skanowanie towarów odbywa się w dokumentach przyjęcia, umiejscowienia, selekcji oraz innych operacjach magazynowych. Aktualny problem: Magazynierzy pracują przez terminal Zebra. Podczas skanowania nie… C#, Bazy danych i SQL ∙ 3 dni 17 godzin temu ∙ 6 ofert |