Hallo zusammen,
ich glaube ich sitze schon zu lange dran und sehe den Wald vor lauter Bäumen nicht mehr.
Folgendes Problem:
Angenommen ich habe einen Raum in den gleichzeitig sagen wir 100 Leute rein passen. Die Leute dürfen den Raum zu bestimmten Zeiten betreten und dürfen unterschiedliche lange in dem Raum bleiben. Manche Leute dürfen 60min drin bleiben andere 90min und wieder andere 120min.
Die Leute dürfen den Raum nur zu bestimmten Zeiten betreten sagen wir mal 14:00 Uhr, 14:30 Uhr, 15:00 Uhr, 15:30 und 16:30. Jede Startzeit hat eine andere länge. Also die zum Beispiel die um 14:30 rein kommen dürfen 90min drin bleiben, die um 15 Uhr kommen nur 60min.
Jetzt muss ich gucken das ich eine Abfrage generiere die mir immer ausgibt ob zu einer bestimmten Startzeit noch Leute in den Raum rein passen.
Dazu habe ich eine Tabelle in die ich eintrage wieviele Leute zu welcher Zeit kommen wollen. Da die Zeiten sich aber überschneiden und teilweise Zeiten mitten innerhalb einer Zeit enden erweist sich dieses für mich als schwierig.
Die Tabelle reservierungen hat folgende Felder:
id datum anzahl uhrzeit endzeit dauer
die Dauer ist eine id die in einer anderen Tabelle duration dann auch in Minuten drin steht.
derzeit lasse ich zu jeder Zeit eine Abfrage laufen.
SELECT id, anzahl, uhrzeit, datum, dauer FROM reservierungen WHERE datum='06.01.2017' AND (uhrzeit BETWEEN '15:00:00' AND '15:59:59' OR endzeit BETWEEN '15:00:00' AND '15:59:59')
eine Sekunde habe ich abgezogen, damit die Leute die um 16:00 Uhr starten nicht mit eingerechnet werden. Davon lasse ich mir die Anzahl ausgeben. Das klappt auch gut. Allerdings gibt es dabei ein Problem.
Leute - Startzeit - Dauer
9 - 14:00:00 - 90
9 - 14:30:00 - 90
37 - 14:30:00 - 60
40 - 15:00:00 - 60
5 - 15:30:00 - 90
8 - 15:30:00 - 60
von 15:00- 16:00 wären also 108 Leute im Raum. Allerdings verlassen ja auch wieder um 15:30 48 Leute den Raum so das keine 108 Leute gleichzeitig im Raum drin sind.
Wie kann ich das nur in die Query mit einbauen das berücksichtigt wird das die Zeitüberschneidung nicht alle betrifft.
Ich hoffe ich konnte mein Problem verständlich darstellen.
Freue mich über kompetente Antworten.
Danke euch
Miriam
ich glaube ich sitze schon zu lange dran und sehe den Wald vor lauter Bäumen nicht mehr.
Folgendes Problem:
Angenommen ich habe einen Raum in den gleichzeitig sagen wir 100 Leute rein passen. Die Leute dürfen den Raum zu bestimmten Zeiten betreten und dürfen unterschiedliche lange in dem Raum bleiben. Manche Leute dürfen 60min drin bleiben andere 90min und wieder andere 120min.
Die Leute dürfen den Raum nur zu bestimmten Zeiten betreten sagen wir mal 14:00 Uhr, 14:30 Uhr, 15:00 Uhr, 15:30 und 16:30. Jede Startzeit hat eine andere länge. Also die zum Beispiel die um 14:30 rein kommen dürfen 90min drin bleiben, die um 15 Uhr kommen nur 60min.
Jetzt muss ich gucken das ich eine Abfrage generiere die mir immer ausgibt ob zu einer bestimmten Startzeit noch Leute in den Raum rein passen.
Dazu habe ich eine Tabelle in die ich eintrage wieviele Leute zu welcher Zeit kommen wollen. Da die Zeiten sich aber überschneiden und teilweise Zeiten mitten innerhalb einer Zeit enden erweist sich dieses für mich als schwierig.
Die Tabelle reservierungen hat folgende Felder:
id datum anzahl uhrzeit endzeit dauer
die Dauer ist eine id die in einer anderen Tabelle duration dann auch in Minuten drin steht.
derzeit lasse ich zu jeder Zeit eine Abfrage laufen.
SELECT id, anzahl, uhrzeit, datum, dauer FROM reservierungen WHERE datum='06.01.2017' AND (uhrzeit BETWEEN '15:00:00' AND '15:59:59' OR endzeit BETWEEN '15:00:00' AND '15:59:59')
eine Sekunde habe ich abgezogen, damit die Leute die um 16:00 Uhr starten nicht mit eingerechnet werden. Davon lasse ich mir die Anzahl ausgeben. Das klappt auch gut. Allerdings gibt es dabei ein Problem.
Leute - Startzeit - Dauer
9 - 14:00:00 - 90
9 - 14:30:00 - 90
37 - 14:30:00 - 60
40 - 15:00:00 - 60
5 - 15:30:00 - 90
8 - 15:30:00 - 60
von 15:00- 16:00 wären also 108 Leute im Raum. Allerdings verlassen ja auch wieder um 15:30 48 Leute den Raum so das keine 108 Leute gleichzeitig im Raum drin sind.
Wie kann ich das nur in die Query mit einbauen das berücksichtigt wird das die Zeitüberschneidung nicht alle betrifft.
Ich hoffe ich konnte mein Problem verständlich darstellen.
Freue mich über kompetente Antworten.
Danke euch
Miriam