Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment gérer la disponibilité des chambres en fonction des jours ou des mois d'occupation

Gardez une liste des réservations de chambres qui ont une date de début et une date de fin. N'essayez pas de modéliser les créneaux de disponibilité ou de considérer votre base de données de réservation comme une feuille de calcul. Cela ne fera que vous conduire à une complexité inutile. Les plages de dates sont faciles à utiliser.

La chose la plus importante à savoir est de savoir comment détecter les plages de dates qui se chevauchent dans vos requêtes. C'est la base pour tester si une chambre est déjà réservée ou si elle est libre. Supposons que vous ayez une table RESERVATION et que vous souhaitiez rechercher des réservations qui chevauchent une plage de dates donnée :@FromDate et @ToDate. Votre clause WHERE pour rechercher des réservations qui se chevauchent ressemble à ceci :

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

Les salles disponibles n'auront pas de conflits (c'est-à-dire WHERE NOT IN...) et les salles indisponibles auront un conflit.