AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Zeitüberschneidungen berechnen

Zeitüberschneidungen berechnen

Ein Thema von quendolineDD · begonnen am 29. Jan 2009 · letzter Beitrag vom 29. Jan 2009
Antwort Antwort
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#1

Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 10:42
Datenbank: MySQL • Version: 5.0.51 • Zugriff über: localhost
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:
--------------------------------------------------
| TID | GID | Datum | Start | Ende | Bezeichnung |
--------------------------------------------------
Lg
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 10:57
Ich würde das vor dem Eintragen überprüfen:

select * from <Tabelle> where Datum = :datum and start <= :ende and ende >= :ende;
Markus Kinzler
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 11:19
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

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))) gemacht.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.762 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 11:33
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
Klaus
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 11:53
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.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 12:28
Zitat:
Dabei muss jedoch beachtet werden, das es 3 Fälle von Überschneidungen gibt.
Das sollte eigentlich in der enen Abfrage alles drin sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 13:42
Zitat von mkinzler:
Ich würde das vor dem Eintragen überprüfen:
select * from <Tabelle> where Datum = :datum and start <= :ende and ende >= :ende;
das funktioniert nicht ...
select * from <Tabelle> where Datum = :datum and start <= :ende and ende >= :start; so tut das jetzt auch wahr wohl nur ein Vertipper ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Zeitüberschneidungen berechnen

  Alt 29. Jan 2009, 13:43
Zitat:
so tut das jetzt auch Wink wahr wohl nur ein Vertipper ...
Ja so war es gemeint
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz