webForumDet fria alternativet

Hjälp med SQL-sats!

Databaser & SQLur Databashanterare & SQL

1 svar · 193 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#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!

Medlem 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. ;)

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