Zidar Canada
Član broj: 15387 Poruke: 3085 *.eqao.com.
|
Posto si iz podgorice, verovatno radis neku bazu koja cuva podatke o raspolozivosti soba u hotelu ili slicno. Verovatno zelis da pokazes u nekom momentu kada su sobe slobodne a kada zauzete. Nisam nikada radio baze za turizam, ali su opsta pravila uvek ista - cuvaju se samo sirovi podaci. Sve sto se moze izracunati, ne cuva se u tabelema. kako mi se cini, u tabeli bi trebao da cuvas samo sledeca polja:
RezervacijaID
SobaID,
DatumOdKadJeSobaZauzeta
BrojdanaKolikoceSobaBitiZauzeta
Sada, kad neko hoce da rezervise sobu od nekog datuma X, u trajanju od Y dana, ti proveris u tabeli da li postoji rezervacija koja uzima deo intervala (X,X+Y). Ako nema konflikta, primis rezervaciju, u protivnom, odbijes. Ova analiza treba da se obavi u nekom triggeru, na samom SQL serveru (jel' bese SQL server u pitanju). Ako ovo proradi, neces moci da unses konfliktne rezervacije. U tom slucaju prikazivanje kad je soba slobodna -zauzeta, bilo bi relativno jednostavno:
SELECT
A.SobaID,
ZauzetaOD = A.DatumOdKadJeSobaZauzeta,
ZauzetaDo = A.DatumOdKadJeSobaZauzeta+A.BrojdanaKolikoceSobaBitiZauzeta,
SlobodnaOD = A.DatumOdKadJeSobaZauzeta+A.BrojdanaKolikoceSobaBitiZauzeta
SlobodnaDO =
(SELECT MIN(B.DatumOdKadJeSobaZauzeta)
FROM tblRezervacije AS B
WHERE B.DatumOdKadJeSobaZauzeta>A.DatumOdKadJeSobaZauzeta)
FROM tblRezervacije AS A
SlobodnaDO dakle jeste najmanji od svih datuma kada pocinje neka rezervacija a koji su veci od tekuceg datuma. Mozda negde treba da se doda +1, zavisi kako definises slobodnu sobu - da li je soba slobodna poslednjeg dana rezervacije, ili tek od sutra?
Dalje ne znam.
:-)
|