Avatar billede ofd123 Nybegynder
23. maj 2003 - 12:06 Der er 1 løsning

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
Avatar billede ofd123 Nybegynder
23. maj 2003 - 16:13 #1
jeg er bare et fjols .. har fundet ud af det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester