Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere le date disponibili con le prenotazioni?

Se il modulo di prenotazione richiede $inizio e $fine/orari per la prenotazione, questa query indicherà quali laptop sono disponibili nel periodo specificato da queste due date:

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)

I primi due between clausole troveranno tutti i laptop le cui date di inizio/fine non rientrano nelle date di inizio/fine richieste - es. sono riservati, ma sono disponibili nell'intervallo di tempo specificato. Il controllo nullo troverà tutti i laptop che non hanno prenotato affatto. E il controllo types.id limita la ricerca ai soli laptop.