Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać wolne terminy z rezerwacjami?

Jeśli w formularzu rezerwacji pojawi się prośba o podanie $początkowej i $końcowej daty/godziny rezerwacji, to zapytanie wskaże, które laptopy są dostępne w okresie określonym przez te dwie daty:

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)

Pierwsze dwa between klauzule znajdą laptopy, których daty rozpoczęcia/zakończenia nie mieszczą się w żądanych datach rozpoczęcia/zakończenia — np. są zarezerwowane, ale są dostępne w określonym przedziale czasowym. Test null znajdzie wszystkie laptopy, które w ogóle nie są zarezerwowane. A kontrola types.id ogranicza wyszukiwanie tylko do laptopów.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Model CakePHP z datami między

  2. Numeryczna kolumna MySQL z ograniczeniem zakresu:jak?

  3. MySQL konwertuje stopnie, minuty, sekundy na stopień dziesiętny

  4. Eksportuj listę ładnych permalinków i tytuł posta

  5. Wiele kluczy obcych do tej samej tabeli Orm gazu