![]() |
Datenbank: MySQL • Version: 5.0.51 • Zugriff über: localhost
Zeitüberschneidungen berechnen
Hallo DP.
Mein SQL ist etwas eingefroren. Ich will in meiner DB die Zeitüberschneidungen in einer Tabelle errechnen. Dabei habe ich folgende Werte mit denen ich überprüfe: eine Gruppen-ID, ein Datum, eine Start- und Endzeit. Ich will überprüfen, bei welchen gleichen Gruppen-IDs eine Zeitüberschneidung am gleichen Tag stattfinden. D.h. es können täglich mehrere Termine für eine Gruppe stattfnden, jedoch sollten diese sich nicht überschneiden. Mir misfällt nun, wie ich mit einem Datensatz durch die anderen iterieren kann, um diese gegenseitig zu überprüfen. Würde das ganze gerne auf den SQL-Server auslagern, und das nicht im Programm selber machen. Hier noch meine Tabelle:
Code:
Lg
--------------------------------------------------
| TID | GID | Datum | Start | Ende | Bezeichnung | -------------------------------------------------- |
Re: Zeitüberschneidungen berechnen
Ich würde das vor dem Eintragen überprüfen:
SQL-Code:
select * from <Tabelle> where Datum = :datum and start <= :ende and ende >= :ende;
|
Re: Zeitüberschneidungen berechnen
Vielleicht das Beste.
Dabei muss jedoch beachtet werden, das es 3 Fälle von Überschneidungen gibt. 1. die Anfangszeit2 liegt im Zeitraum1 oder 2. die Endzeit2 liegt im Zeitraum1 oder 3. Der Zeitraum1 liegt im Zeitraum2. Hab daraus erstmal
SQL-Code:
gemacht.
select count(tid) from tbl_termin where gid=:id and datum=:date and ((startzeit <= :start) and (:start <= Endzeit) or ((Startzeit <= :ende) and (:ende <= Endzeit)) or ((:start <= Startzeit) and (:ende >= Endzeit)))
|
Re: Zeitüberschneidungen berechnen
Hallo Lars,
eine kleine Anmerkung am Rande: Wäre es nicht besser dem User die bereits gebuchten Zeiten für eine Gruppe grafisch anzuzeigen. Dann hat er/sie es in der Hand einen Termin zu finden. Ich als User würde es als etwas lästig empfinden, Zeiträume zu "buchen" und dann gesagt zu bekommen das dieser Zeitraum schon irgendwie belegt ist. Grüße Klaus |
Re: Zeitüberschneidungen berechnen
Sicher wäre es das. Ein Benutzer steht nur zu einer Gruppe zu einer m:n-Relation, und die Termine aller Gruppen können sich immer noch überschneiden.
Im endefekt handelt es sich hier um ein Projekt für den Schulunterricht, wobei mir dann eine mäßig angelegte Benutzerausrichtung ausreicht. |
Re: Zeitüberschneidungen berechnen
Zitat:
|
Re: Zeitüberschneidungen berechnen
Zitat:
SQL-Code:
so tut das jetzt auch ;) wahr wohl nur ein Vertipper ...
select * from <Tabelle> where Datum = :datum and start <= :ende and ende >= :start;
|
Re: Zeitüberschneidungen berechnen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz