Abfrage für verfügbare Zimmer in hotel-Reservierung
ich wurde beauftragt, ein online-hotel-Reservierungs-system. das problem, das ich sehe, ist die Abfrage des verfügbaren Zimmer für eine bestimmte Zimmerkategorie für einen bestimmten Zeitraum. Mein Datenbank-design besteht aus 4 Tabellen. Die Datenbank-design ist wie folgt:
tbl_reservationdetails ( stores the general details of the reservation )
pk resrvdtl_id (primary key)
fk client_id (insignificant for now)
start_date (customer's check-in-date)
end_date (customer's check-out-date)
tbl_reservation (stores the rooms reserved for a particular reservation )
pk reserv_id (primary key)
fk resrvdtl_id (foreign key, to know to whom and when the room should be occupied)
fk room_id (the room reserved)
tbl_room
pk room_id (primary key)
room_number
fk room_categId (to know what category this room belongs to)
tbl_roomcategory
pk room_categId (primary key)
room_category (description of category.. example: Suite, Superior, Deluxe etc. in my case... there are four categories)
Benutzereingaben die Termine (start und Ende) und der Kategorie der Zimmer, die er will. Ich bin ganz neu auf diesem... wie kann ich die Abfrage zum prüfen des verfügbaren Zimmer für diese Kategorie zu einem bestimmten Termin?????
jede Antwort zu diesem würde sehr geschätzt... vielen Dank
- Das sieht ein bisschen wie Hausaufgaben - vielleicht zeigen Sie Ihre Arbeit erste - Tipp müssen Sie mit einem join
- Ich möchte hinzufügen
tbl_room.room_notes
wie "in der Nähe des lift' (oder '...elevator', wenn es auf der anderen Seite des Atlantiks) oder 'Schönen Blick auf die downtown'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde wahrscheinlich erweitern Sie das gewünschte Datum Auswahl in der entsprechenden Liste Datum überprüft dann jedes Datum aus der Liste und jedem Raum die gewünschte Kategorie gegen die Reservierung records.
Hier ist meine Lösung für SQL Server, der verwendet ein rekursive CTE für den ausbau der Datumsbereich:
Beiden anderen RDBMS-spezifische Elemente dieser Abfrage sind die beiden Datum-Funktionen:
DATEADD
, die in der CTE für das Durchlaufen der Datumsbereich;DATEDIFF
, verwendet für die Gruppierung der Ergebnismenge auf angrenzende Datum Sequenzen für die gleichen Zimmer, so dass anstelle vonhaben, könnten Sie die Ausgabe wie diese:
So, ich werde erklären. Diese findet in einem Zimmer nicht verfügbar ist, der Daten zur Verfügung gestellt.
Diese wählt alle Zimmer auf der angegebenen Kategorie.
Diese wählt alle Zimmer sind von der angegebenen Kategorie und nicht in den Zimmer nicht verfügbar.
Habe ich nicht in der Lage gewesen um dies zu testen, sollte aber richtig sein. Wenn es irgendwelche Probleme mit es, lassen Sie mich wissen, und ich werde es in Ordnung bringen.