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

Comment obtenir des dates disponibles avec des réservations ?

Si votre formulaire de réservation demande les dates/heures $start et $end pour la réservation, cette requête indiquera quels ordinateurs portables sont disponibles pendant la période spécifiée par ces deux dates :

SELECT items.id, items.name
FROM items
LEFT JOIN types ON items.type = types.id
LEFT JOIN reservations ON reservations.item_id = items.id
WHERE (((reservations.endDate NOT between $start AND $end) and
      (reservations.startDate NOT between $start AND $end)) or
      (reservations.id IS NULL)) and
      (types.id = $laptop_type_id)

Les deux premiers between les clauses trouveront tous les ordinateurs portables dont les dates de début/fin ne correspondent pas aux dates de début/fin demandées - par ex. ils sont réservés, mais sont disponibles dans la plage horaire spécifiée. La vérification nulle trouvera tous les ordinateurs portables qui ne sont pas du tout réservés. Et la vérification types.id limite la recherche aux seuls ordinateurs portables.