webForumDet fria alternativet

Hjälp med SQL-sats!

1 svar · 193 visningar · startad av Fredde Mannen

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#1

Har ett litet problem, vet inte riktig om det funkar att bara använda en SQL-sats till att utföra det, men jag ställer min fråga i alla fall.

Har 3 tabeller: bokningar, rumbokning och rum

bokningar
Bokningsnr | Kundnr | Bokningsdatum

rumbokning
ID | Bokningsnr | Rumnr | Ankomst | Avresa

rum
Rumnr

De attribut som är angivna är inte alla men är de som berörs av det som jag vill ha hjälp med.

Jag om jag har ett gäng med bokningar utförda på diverse rum, dessa finns i rumbokningar:
1 | BOK00001 | 112 | 2003-11-30 | 2003-12-04
2 | BOK00002 | 113 | 2003-11-30 | 2003-12-02
3 | BOK00003 | 117 | 2003-12-01 | 2003-12-14
4 | BOK00004 | 114 | 2003-12-12 | 2003-12-20

Mitt problem är, jag vill undvika dubbelbokningar, säg att en kund vill boka ett rum dessa datum: 2003-12-01 tom 2003-12-06, då är ju 112, 113, 117 upptaget, men hur kan jag göra en SQL-sats som kollar vilka rum som inte är upptagna i intervallet 2003-12-01 o 2003-12-06? :q :q

Detta förbryllar mig!

cyprysMedlem sedan dec. 20003 563 inlägg
#2
SELECT rum.rumnr 
FROM rum 
WHERE rum.rumnr NOT IN 
(
SELECT rumnr 
FROM rumbokning 
WHERE 
(Ankomst BETWEEN '2003-12-01' AND '2003-12-06' OR
Avresa BETWEEN '2003-12-01' AND '2003-12-06') OR
(Ankomst < '2003-12-01' AND
Avresa > '2003-12-06')
)

Hmm. Kanske lite skum wheresats där. Går nog att göra lite bättre. ;)

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)