Toon posts:

Op zoek naar juiste Query

Pagina: 1
Acties:

Onderwerpen


Anoniem: 291537

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!

  • 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
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


  • 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}


  • 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.”



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee