Avatar billede aslan Nybegynder
17. juni 2002 - 19:13 Der er 13 kommentarer og
2 løsninger

Lidt inspiration..

Jeg har en klasse i min database der hedder værelse og den bliver aggregeret i en klasse der hedder booked hvor alle bookings på bestemte værelser står.Dvs den har attributterne værelseNr ,bookingStart og bookingSlut.Disse attributter bliver kun oprettet når der sker en booking.Er der en der har en ide til hvordan jeg søger på ledige værelser?

Avatar billede prom Nybegynder
17. juni 2002 - 19:42 #1
boolean ledig = false;
int værelse = værelsetDerMåskeErLedigt;
Date dato = new Date();
String query = "select * from værelse, booked" +
  "where værelse.værelseNr = booked.værelseNr" +
  "and bookingStart < '"+ dato + "'"
  "and bookingSlut > '"+ dato + "'";

int[] bookedeVærelser = getDataFraDatabase(query);

for(int i=0; i< bookedeVærelser.length; i++){
  if(bookedeVærelser[i] == værelse){
    ledig = true;
    break;
}

prom
Avatar billede prom Nybegynder
17. juni 2002 - 19:44 #2
if(ledig)
  værelset_er_ledigt

prom
Avatar billede aslan Nybegynder
18. juni 2002 - 00:10 #3
Jeg tror ikke den helt holder vand den der prom... For det første er dato ikke kun en værdi det er 2 dvs datoBookedeStart og datoBookedSlut.For det andet finder du kun en enkelt ledig værelse du skal finde alle... Hvis jeg selvfølgelig har forstået dig rigtigt.Prøv at forklare din ide istedet for kode!
Avatar billede prom Nybegynder
18. juni 2002 - 00:55 #4
Du har sku nok ret i at det ikke holder vand, det var kun lidt tankespind for at få dikussionen i gang. Det ville være lettere hvis vi kan se hvordan dine tabeller ser ud....

prom
Avatar billede aslan Nybegynder
18. juni 2002 - 00:59 #5
CREATE TABLE VAERELSE
(
  VAERELSENR            INTEGER NOT NULL,
  TYPEN             VARCHAR(10) NOT NULL,
  RESNR             INTEGER NOT NULL,
  VAERELSESTATUS    VARCHAR(10) NOT NULL,
  HAVUDSIGT            INTEGER NOT NULL,
  SAL                  INTEGER NOT NULL,
  STEDGANG            INTEGER NOT NULL,     
  PRIS              INTEGER NOT NULL,
  STORRELSE            INTEGER NOT NULL,
  STIL                  VARCHAR(100) NOT NULL,
  ANTALBAD              INTEGER NOT NULL,
 
  PRIMARY KEY(VAERELSENR)

);

CREATE TABLE BOOKING
(
  VAERNR              INTEGER NOT NULL,
  RESNR                INTEGER NOT NULL,
  RESSTART            char(30) NOT NULL,
  RESSLUT              char(30) NOT NULL               

);
Avatar billede aslan Nybegynder
18. juni 2002 - 01:05 #6
undskyld mig men på engelsk..

I have a Rooms class in my database with all its attributs like number ,prize,size and so on then I have a class Bookings where I put all the bookings for each rooms.Every rooms can have severals ore none bookings.Booking class have the attributs roomNumber,bookingStart and bookingEnd. Now when a guest wants to book a room I want to seach for a free room with startDate and endDate of the days a guest wants to stay on the Hotel.How can that be possible??
Avatar billede prom Nybegynder
18. juni 2002 - 09:45 #7
Tabellen BOOKING ser mig noget ulden ud. Din RESSTART og RESSLUT, skal vel være en eller anden form for dato?...

Hvad bruger du RESNR i VAERELSE til?...

prom
Avatar billede aslan Nybegynder
18. juni 2002 - 09:57 #8
For at holde styr på hvilken reservation der peger på pårørende VAERELSE....
Avatar billede prom Nybegynder
18. juni 2002 - 10:03 #9
Det kan du gøre ved at indføre en fremmednøgle:
CREATE TABLE BOOKING
(
  VAERNR            INTEGER NOT NULL,
  RESNR            INTEGER NOT NULL,
  RESSTART          char(30) NOT NULL,
  RESSLUT          char(30) NOT NULL,
  PRIMARY KEY(VAERNR, RESNR),
  Foreign Key(VAERNR) References VAERELSE(VAERELSENR) On delete Cascade On Update Cascade
);

Bagefter kan du så joine tabellerne...

Men hvad med RESSTART og RESSLUT?...

prom
Avatar billede prom Nybegynder
18. juni 2002 - 10:03 #10
Med mindre du bruger MySql, jeg tror ikke den understøtter fremmednøgler????...

prom
Avatar billede aslan Nybegynder
18. juni 2002 - 10:37 #11
Prom jeg behøver slet ikke den skare du lige smed op der, så kompleks er forholdet heller ikke jeg skal bare sørge for at klasserne har 2 ens attributter så kan jeg styre forholdet mellem dem, men ellers tak...

RESSTART er reservation start og RESSLUT reservation slut..
Avatar billede aslan Nybegynder
18. juni 2002 - 10:40 #12
Jeg har ellers forsøgt mig således:

("SELECT * FROM VAERELSE WHERE NOT VAERELSENR IN (SELECT VAERNR FROM PERIODER WHERE(RESSTART<=hentFunk.conveter(start) AND hentFunk.conveter(start)<= RESSLUT) OR (RESSTART <=hentFunk.conveter(slut) AND hentFunk.conveter(slut) <= RESSLUT)");

Hvor hentFunk.conveter() er en metode der konvetere String til date, men den giver fejl.Java har ikke noget imod den, men det har interbase.
Avatar billede aslan Nybegynder
18. juni 2002 - 10:41 #13
PERIODER = BOOKING
Avatar billede prom Nybegynder
18. juni 2002 - 12:06 #14
Har du pakket dine funktionskald ind i glyffer?:
...START<= '"+ hentFunk.conveter(start) +"' AND '"+ hentFunk.conveter(start) +"'<= RE...

Jeg tror stadig at du har et problem med RESSTART og RESSLUT i:
CREATE TABLE BOOKING
(
  VAERNR      INTEGER NOT NULL,
  RESNR      INTEGER NOT NULL,
  RESSTART    char(30) NOT NULL,
  RESSLUT    char(30) NOT NULL 
;

Interbase ved jo ikke at det er datoer...

prom
Avatar billede aslan Nybegynder
22. juni 2002 - 20:04 #15
ehm
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
Kurser inden for grundlæggende programmering

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