sql >> Databasteknik >  >> RDS >> Mysql

Hur man hanterar rumstillgänglighet baserat på dagars eller månaders ockupation

Håll en lista över rumsreservationer som har ett startdatum och ett slutdatum. Försök inte att modellera tillgänglighetsplatser eller se din bokningsdatabas som ett kalkylblad. Detta kommer bara att leda dig till meningslös komplexitet. Datumintervall är lätta att arbeta med.

Det viktigaste att veta är hur man upptäcker överlappande datumintervall i dina frågor. Detta är grunden för att testa om ett rum redan är reserverat eller om det är ledigt. Låt oss säga att du har en RESERVATIONStabell och du vill hitta reservationer som överlappar ett givet datumintervall:@FromDate och @ToDate. Din WHERE-sats för att hitta överlappande reservationer ser ut så här:

WHERE RESERVATION.start_date < @ToDate 
  AND RESERVATION.end_date > @FromDate

Tillgängliga rum kommer inte att ha konflikter (dvs. WHERE NOT IN...) och otillgängliga rum kommer att ha en konflikt.




  1. Förhindra rekursiv trigger i PostgreSQL

  2. Hur man konverterar en sträng till ett datum/tid i SQL Server med CAST()

  3. SQL-fråga för att sammanfoga kolumnvärden från flera rader i Oracle

  4. 5 typer av databasreparationer