Na een aantal zware fails om de juiste query te achterhalen wend ik me tot uwe heren (en dames).
Het zit is als volgt:
Ik ben bezig aan een reserveringssysteem waarbij het vrij simpel moet zijn voor de gebruiker om een reservering te doen. Nu is het plan om aan de hand van de datum, begintijd en eindtijd van een reservering de beschikbare ruimtes weer te geven.
Als voorbeeld neem ik de indeling van mijn 2 tabellen:
ruimtes
Ik heb enkele reserveringen al ingepland als test:
Reserveringen
De query die ik op het moment gebruik is als volgt:
SELECT naam, ruimteID
FROM ruimtes
WHERE (ruimteID NOT IN
(SELECT ruimte
FROM reservering
WHERE (datum = @datum) AND (begintijd >= @eindtijd) OR
(eindtijd <= @begintijd)))
Het is dus de bedoeling dat de query de ruimteID's tevoorschijn tovert van ruimtes die nog beschikbaar zijn (ruimtes waarbij de reserveringsperiode nog beschikbaar is dus).
Wanneer ik op het moment de volgende data gebruik:
Reservering op 13-06-2011 tussen 13u30 en 14u
Krijg ik alleen ruimte 1 te zien die over zou zijn, terwijl tussen deze tijd alle ruimtes beschikbaar zouden moeten zijn.
Ik ben helaas geen kei met query's, maar bovenstaande werkt niet, ik heb er een aantal variaties doorheen gesmeten, maar raak steeds verder van de digitale wal.
Iemand enig idee hoe ik dit kan oplossen? eventueel met een complete overhaul.
Alvast ontzettend bedankt!
Het zit is als volgt:
Ik ben bezig aan een reserveringssysteem waarbij het vrij simpel moet zijn voor de gebruiker om een reservering te doen. Nu is het plan om aan de hand van de datum, begintijd en eindtijd van een reservering de beschikbare ruimtes weer te geven.
Als voorbeeld neem ik de indeling van mijn 2 tabellen:
ruimtes
code:
1
2
3
4
5
| ruimteID naam maxpersonen opmerkingen 1 Studiekamer 6 X 2 Spreekkamer 12 X 3 Leeskamer 18 X 4 Beamerkamer 6 X |
Ik heb enkele reserveringen al ingepland als test:
Reserveringen
code:
1
2
3
4
5
| ID datum begintijd eindtijd personen ruimte 1 21-04-2011 21-04-2011 10:00:00 21-04-2011 12:00:00 3 5 2 13-06-2011 13-06-2011 11:45:00 13-06-2011 12:30:00 6 3 3 12-06-2011 12-06-2011 10:00:00 12-06-2011 12:00:00 5 2 4 13-06-2011 13-06-2011 12:00:00 13-06-2011 13:00:00 4 4 |
De query die ik op het moment gebruik is als volgt:
SELECT naam, ruimteID
FROM ruimtes
WHERE (ruimteID NOT IN
(SELECT ruimte
FROM reservering
WHERE (datum = @datum) AND (begintijd >= @eindtijd) OR
(eindtijd <= @begintijd)))
Het is dus de bedoeling dat de query de ruimteID's tevoorschijn tovert van ruimtes die nog beschikbaar zijn (ruimtes waarbij de reserveringsperiode nog beschikbaar is dus).
Wanneer ik op het moment de volgende data gebruik:
Reservering op 13-06-2011 tussen 13u30 en 14u
Krijg ik alleen ruimte 1 te zien die over zou zijn, terwijl tussen deze tijd alle ruimtes beschikbaar zouden moeten zijn.
Ik ben helaas geen kei met query's, maar bovenstaande werkt niet, ik heb er een aantal variaties doorheen gesmeten, maar raak steeds verder van de digitale wal.
Iemand enig idee hoe ik dit kan oplossen? eventueel met een complete overhaul.
Alvast ontzettend bedankt!