mysql select perioder fra dato'er
jeg har denne database:***********************************************************
drop table Type;
drop table Tilbehoer;
drop table Gaest;
drop table Bruger;
drop table Bestilling;
drop table Vaerelse;
drop table Extra;
create table Type
(Type_id char(1) not null primary key,
Info text not null,
Pris decimal(5,2) not null,
Foto varchar(30)
);
create table Tilbehoer
(T_nr integer(2) not null auto_increment primary key,
Navn varchar(15) not null,
Info text not null,
Pris decimal(5,2) not null
);
create table Gaest
(Id integer(5) not null auto_increment primary key,
fnavn varchar(20) not null,
enavn varchar(20) not null,
adresse varchar(30) not null,
postnr char(4) not null,
city varchar(20) not null,
tlf varchar(15) not null unique,
email varchar(30)
);
create table Bruger
(Brugernavn varchar(15) not null primary key,
Password varchar(15) not null,
Niveau char(1) not null
);
create table Vaerelse
(V_nr integer(3) not null primary key,
Type char(1) not null,
index Vaerelse_Type(Type),
foreign key(Type) references Type(Type_id));
create table Bestilling
(B_nr integer(5) not null auto_increment primary key,
Startdato date not null,
Slutdato date not null,
Vaer_nr integer(3) not null,
G_id integer(5) not null,
index Vaerelse_nr(Vaer_nr),
index Gaest_Id(G_id),
foreign key(Vaer_nr) references Vaerelse(V_nr),
foreign key(G_Id) references Gaest(Id));
create table Extra
(Best_nr varchar(5) not null,
Tilb_nr integer(2) not null,
index Bestillings_nr(Best_nr),
index Tilbehoers_nr(Tilb_nr),
primary key(Best_nr, Tilb_nr),
foreign key(Best_nr) references Bestilling(B_nr),
foreign key (Tilb_nr) references Tilbehoer(T_nr));
commit;
***********************************************************
jeg skulle finde ud af hvad værelser som er ledige i en periode og hvad værelser som er optaget.
jeg har selv prøvet med noget som det her:
select count(distinct v_nr) as antal, type
from vaerelse
where type in
(select type
from bestilling, vaerelse
where vaer_nr = v_nr
and type ='a'
and startdato >= 2003-05-23
and slutdato >= 2003-05-25)
group by type;
og:
select count(distinct v_nr) as antal, type
from vaerelse
where type not in
(select type
from bestilling, vaerelse
where vaer_nr = v_nr
and type ='a'
and startdato >= 2003-05-23
and slutdato >= 2003-05-25)
group by type;
men hvis jeg har et værelse som er booket ude fra periode
fx. fra den 2003-05-26 til 2003-05-27 på kommer den stadigvæk op som om det er booket