sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener fechas disponibles con reservas?

Si su formulario de reserva solicita $fechas/horas de inicio y $finalización de la reserva, esta consulta le indicará qué computadoras portátiles están disponibles durante el período especificado por esas dos fechas:

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)

Los dos primeros between Las cláusulas encontrarán cualquier computadora portátil cuyas fechas de inicio/finalización no coincidan con las fechas de inicio/finalización solicitadas, p. están reservados, pero están disponibles en el intervalo de tiempo especificado. La verificación nula encontrará cualquier computadora portátil que no esté reservada en absoluto. Y la comprobación de types.id restringe la búsqueda solo a portátiles.