Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi freien Belegungszeitraum ermitteln (https://www.delphipraxis.net/12792-freien-belegungszeitraum-ermitteln.html)

r_kerber 8. Dez 2003 16:11

Re: freien Belegungszeitraum ermitteln
 
Was Du so alles wissen willst. :lol: Probiere es doch mal mit einer Kombination aus beidem:
SQL-Code:
select distinct raum
from Belegung
where Raum not in
  (select Raum from Belegung
   where '10.01.2004' between anfang and ende
   or '22.01.2004' between anfang and ende
   or ende between '10.01.2004' and '22.01.2004'
   or anfang between '10.01.2004' and '22.01.2004');

Treffnix 8. Dez 2003 16:26

Re: freien Belegungszeitraum ermitteln
 
Also, da find ich meine Idee aber irgendwie... naja, kürzer :gruebel:

Marcel Gascoyne 8. Dez 2003 16:44

Re: freien Belegungszeitraum ermitteln
 
So funktionierts bei mir:

SQL-Code:
select raum
from  Belegung
where raum not in (
         select raum
         from  Belegung
         where ((:von between anfang and ende)
                or (:bis between anfang and ende)
                or (:von <= anfang and :bis >= anfang)
                or (:von <= anfang and :bis >= ende)))
Gruß,
Marcel

r_kerber 8. Dez 2003 17:15

Re: freien Belegungszeitraum ermitteln
 
Zitat:

Zitat von Treffnix
Also, da find ich meine Idee aber irgendwie... naja, kürzer :gruebel:

Liefert nur nicht das erwünschte Ergebnis!

Robert_G 8. Dez 2003 18:02

Re: freien Belegungszeitraum ermitteln
 
Das Problem an meiner vorherigen Lösung war, dass Einträge, die vor :StartTm begannen/ nach :EndTm endeten, nicht erfasst wurden.
Versuch's mal so:
SQL-Code:
SELECT DISTINCT t.Raum
FROM  T_Daten t
WHERE t.Raum NOT IN
       (SELECT x.Raum
        FROM  T_Daten x
        WHERE (x.Anfang BETWEEN :StartTm AND :EndTm OR
                x.Ende  BETWEEN :StartTM AND :EndTm) OR
                x.Anfang <= :StartTm AND x.Ende >= :StartTm)
Kam hier aber bestimmt schon in irgendeinem Posting vor.

@Treffnix
Mach's dir nicht zu einfach - es wird nicht funktionieren.
Was ist wenn das Enddatum kleiner als :EndTm aber größer als :StartTm ist?

Treffnix 8. Dez 2003 18:58

Re: freien Belegungszeitraum ermitteln
 
Zitat:

Zitat von GeorgeWNewbie
@Treffnix
Mach's dir nicht zu einfach - es wird nicht funktionieren.
Was ist wenn das Enddatum kleiner als :EndTm aber größer als :StartTm ist?

Du meinst zum Beispiel Ende ist der 15.01.2004?

Dann ist Ende grösser als 14.01.2004 und passt somit ins Where-Statement, oder steh ich jetzt aufm Schlauch?

Mal ein paar Beispiele, die eigentlich alle Fälle abdecken sollten:
Annahme: StartTm = 12.01.2004, EndTm = 16.01.2004
SQL-Code:
Where Start <=:EndTm And Ende >=:StartTm
Code:
Start   Ende
10.01. - 19.01.
Where 12.01.2004 <= 19.01.2004 And 16.01.2004 >= 10.01.2004  True
13.01. - 15.01.
Where 12.01.2004 <= 15.01.2004 And 16.01.2004 >= 12.01.2004  True
10.01. - 15.01.
Where 12.01.2004 <= 15.01.2004 And 16.01.2004 >= 10.01.2004  True
15.01. - 21.01.
Where 12.01.2004 <= 21.01.2004 And 16.01.2004 >= 15.01.2004  True
09.01. - 10.01.
Where 12.01.2004 <= 10.01.2004 And 16.01.2004 >= 09.01.2004  False ( links )
18.01. - 20.01.
Where 12.01.2004 <= 20.01.2004 And 16.01.2004 >= 18.01.2004  False ( rechts )
*edit* da fehlten noch doppelpunkte *edit*
*edit2* 2 Werte vertauscht *edit2*

Robert_G 8. Dez 2003 19:30

Re: freien Belegungszeitraum ermitteln
 
Sorry TreffNix, hab' mich verguckt... :pale:

Anscheinend hast du vollkommen recht.

Mann (:wall: :wall: :wall: :wall:), manchmal müsste ich akutes Post-Verbot kriegen.
:duck:
(Manchmal denkt man, die Lösung sei kompliziert - also macht man sie auch kompliziert...)
Wenn TreffNix' Lösung bei dir nicht funktioniert dann liegt das ganz einfach an impliziter Umwandlung von String zu Datum.
Füge nicht " '14.01.2003' " in deine Abfrage ein, sondern verwende Variablen, die du als Datum definierst.

Denn implizite Umwandlung bedeutet einen ziemlichen CPU-Overhead auf dem Server.

Rolf Rostig 10. Dez 2003 09:56

Re: freien Belegungszeitraum ermitteln
 
Hallo GeorgeWNewbie,

ich habe jetzt erst die Tests fahren können und es sieht sehr sehr gut aus.

Vielen Dank, auch für die Beiträge von den Anderen.

:hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 Uhr.
Seite 3 von 3     123   

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