Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erhalte ich verfügbare Termine mit Reservierungen?

Wenn Ihr Reservierungsformular nach $Start- und $Enddatum/-zeiten für die Reservierung fragt, gibt diese Abfrage an, welche Laptops während des durch diese beiden Daten angegebenen Zeitraums verfügbar sind:

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)

Die ersten beiden between -Klauseln findet alle Laptops, deren Start-/Enddaten nicht in die angeforderten Start-/Enddaten fallen – z. Sie sind reserviert, aber im angegebenen Zeitraum verfügbar. Die Nullprüfung findet alle Laptops, die überhaupt nicht reserviert sind. Und die Typen.id-Prüfung schränkt die Suche nur auf Laptops ein.