Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verwalten Sie die Zimmerverfügbarkeit basierend auf der Belegung in Tagen oder Monaten

Führen Sie eine Liste der Zimmerreservierungen, die ein Anfangs- und Enddatum haben. Versuchen Sie nicht, verfügbare Slots zu modellieren, oder stellen Sie sich Ihre Reservierungsdatenbank wie eine Tabelle vor. Dies führt Sie nur zu sinnloser Komplexität. Datumsbereiche sind einfach zu handhaben.

Das Wichtigste, was Sie wissen sollten, ist, wie Sie sich überschneidende Datumsbereiche in Ihren Abfragen erkennen. Auf dieser Grundlage kann geprüft werden, ob ein Zimmer bereits reserviert oder frei ist. Angenommen, Sie haben eine RESERVATION-Tabelle und möchten Reservierungen finden, die sich mit einem bestimmten Datumsbereich überschneiden:@FromDate und @ToDate. Ihre WHERE-Klausel zum Auffinden überlappender Reservierungen sieht folgendermaßen aus:

WHERE RESERVATION.start_date < @ToDate 
  AND RESERVATION.end_date > @FromDate

Verfügbare Räume haben keine Konflikte (z. B. WHERE NOT IN...) und nicht verfügbare Räume haben einen Konflikt.