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

MySQL Szukasz wolnych pokoi w systemie rezerwacyjnym

Aby wyszukać wszystkie pokoje, które nie mają rezerwacji w określonym przedziale czasowym, rozważ następujące kwestie:

SELECT roomID FROM room WHERE roomID NOT IN(
    SELECT roomID FROM reservation WHERE startDate < @EndDate AND endDate > @StartDate
)

Co się tam dzieje?

W wewnętrznym zapytaniu przeszukuję listę rezerwacji pod kątem rezerwacji, które przynajmniej częściowo mieszczą się w wymaganych ramach czasowych, i otrzymuję ich identyfikatory pokoi. A następnie, w zewnętrznym zapytaniu, żądam od tabeli pokoi wszystkich identyfikatorów pokoi, które NIE są wymienione, to znaczy nie mają rezerwacji, która przynajmniej częściowo mieści się w wymaganym przedziale czasowym.

@StartDate i @EndDate musiałyby zostać zmodyfikowane przez Ciebie - musisz tam umieścić swoje zmienne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsza technika buforowania wyników z zapytań, które rzadko się zmieniają

  2. serwer czatu:jaki jest najlepszy (zoptymalizowany) sposób zapisywania dziennika rozmów

  3. PHP PDO zwraca niespójne wyniki dla SELECT FOUND_ROWS()

  4. Wiele pętli PHP WHILE używających tego samego zapytania

  5. Laravel Usuń Konstruktor Zapytań