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

MySQL Leder efter gratis værelser i reservationssystem

For at søge efter alle værelser, der ikke har nogen reservationer inden for en bestemt tidsramme, skal du overveje følgende:

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

Hvad sker der?

I den indre forespørgsel søger jeg på reservationslisten efter reservationer, der i det mindste delvist er inden for den påkrævede tidsramme, og får deres værelses-id'er. Og så, i den ydre forespørgsel, anmoder jeg fra værelsesbordet om alle rum-id'er, der IKKE er angivet, det vil sige, de har ingen reservation, der i det mindste delvist er inden for den påkrævede tidsramme.

@StartDate og @EndDate skal ændres af dig - du skal placere dine variabler der.




  1. Slet alle rækker undtagen første N fra en tabel med en enkelt kolonne

  2. BLOB vs. VARCHAR til lagring af arrays i en MySQL-tabel

  3. Når du åbner en orakelforbindelse, er forbindelsesobjektet nul

  4. SQL DEFAULT Begrænsning for at indsætte kolonne med en standardværdi til SQL Server-tabel