Op zoek naar juiste Query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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
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!

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wat zijn de variabelentypen van je kolommen en parameters? Waarom heten twee kolommen "tijd" terwijl er ook een datum in zit? En wat doet de kolom datum?
Krijg ik alleen ruimte 1 te zien
Voor de duidelijkheid, je bedoelt de ruimte met ID 1, eigenlijk ruimte 5 dus?

[ Voor 33% gewijzigd door CodeCaster op 11-05-2011 13:09 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
(maandelijkse copy/paste van dit antwoord :P )
Voutloos schreef op donderdag 15 april 2010 @ 10:26:
Er is een gehele of gedeeltelijke overlap als eind_2 na start_1 EN begin_2 voor eind_1.

{signature}


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Zou je een normale titel voor je topic kunnen verzinnen. Dit is wel erg generiek en beschrijft je daadwerkelijke probleem niet echt

Verder is je sql een stuk duidelijker leesbaar als je het tussen [code=sql]SQL HIER[/] plaatst en normaal uitlijnt, dus pas dat ook even aan in je startpost.


Bij dit soort problemen is het makkelijker als je eerst de regels die je wil toepassen eens duidelijk opschrijft, en dan stap voor stap uitvoert.

Wat je probeert te doen is alle reserveringen te selecteren die een overlap hebben met de datum/tijd van je interesse. Schrijf dan eerst eens een query die dat doet. Als dat gelukt is kan je proberen het samen te voegen met het selecteren van de ruimtes die dus wel beschikbaar zijn.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”