Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter datas disponíveis com reservas?


Se o seu formulário de reserva solicitar as datas/horas de $start e $end para a reserva, essa consulta informará quais laptops estão disponíveis durante o período especificado por essas duas datas:
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)

Os dois primeiros between cláusulas encontrarão quaisquer laptops cujas datas de início/término não estejam dentro das datas de início/término solicitadas - por exemplo, eles são reservados, mas estão disponíveis no intervalo de tempo especificado. A verificação nula encontrará todos os laptops que não foram reservados. E a verificação de types.id restringe a pesquisa apenas a laptops.