Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse (https://www.delphipraxis.net/189862-tot-oder-lebend-zusammenfassung-verschiedener-ergeignisse-bzw-nichtereignisse.html)

p80286 1. Aug 2016 11:35

Datenbank: oracle • Version: 11 • Zugriff über: egal

Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Hallo zusammen,
ich stehe vor dem Problem einen Aktenstatus zu generieren.
Eine Akte ist grundsätzlich tot.
Sie wird zum Leben erweckt wenn ein Ereignis stattfindet/vorhanden ist.
Eine Akte ist tot wenn div. Ergeignisse stattfinden/vorhanden sind, die eine bestimmte Eigenschaft (caseisdead=1) haben.

z.Zt. habe ich eine View (select casekey,casestate from...) gebastelt die ewig läuft und mMn auch nicht zuverlässig ist.
Könntet Ihr mir einen Schubs in die richtige Richtung geben

SQL-Code:
MainTable: casekey
Eventtable: casekey,eventkey,eventdate,caseisdead,

eventdate ist null oder gefüllt(kann auch Zukunft sein!;
caseisdead ist 0|1  )
Es gibt da zwar noch ein paar Felder mehr, aber die sind uninteressant.

Gruß
K-H

Die CODE-Tags hatten den Inhalt verschluckt, mit CODE=SQL geht's wieder

p80286 1. Aug 2016 13:32

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Hat sich erledigt, ich hab die Frage in einen eigenen View ausgelagert, der ist hinreichend schnell:
SQL-Code:
CREATE OR REPLACE FORCE VIEW "V_LEBEM" ("CASEKEY") as
  select cases.casekey
  from cases join caseevent on (cases.casekey=caseevent.casekey and caseevent.eventkey=119) -- idr
             left join v_event kce on (cases.casekey=kce.casekey and kce.iskillerevent=1)
             left join caseevent napp on (cases.casekey=napp.casekey and napp.eventkey=308) -- napp
  where 1=1
    and napp.casekey is null
    and kce.casekey is null
;
(v_event ist caseevent + Beschreibung/Codierung etc. der Events, so daß ich nicht mit eventkeys hantieren muß)

Gruß
K-H

Cunso 3. Aug 2016 01:23

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Gibt es noch eine, ich sag mal bessere Lösung?
Oder ist die, die Du gefunden hast, die Beste?

p80286 3. Aug 2016 10:13

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Zitat:

Zitat von Cunso (Beitrag 1344035)
Gibt es noch eine, ich sag mal bessere Lösung?
Oder ist die, die Du gefunden hast, die Beste?

Bestimmt nicht, aber mir reicht sie

Gruß
K-H

jobo 3. Aug 2016 16:23

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
bessere Lösung?
Hier gibt's ein sehr spezifisches Problem mit einer spezifischen Lösung.
Was hier technisch geschieht:
Verschiede Daten mit gewünschten Kriterien joinen.
Diese Menge mit den Stammdaten outer joinen und auf Nichtexistenz (join feld der Outer Menge IS NULL) der Joinmenge prüfen. So oder ähnlich muss man wohl vorgehen, wenn man per SQL eine Menge greifen will, die durch Nicht-Existenz glänzt.

p80286 3. Aug 2016 18:09

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Zitat:

Zitat von jobo (Beitrag 1344086)
So oder ähnlich muss man wohl vorgehen, wenn man per SQL eine Menge greifen will, die durch Nicht-Existenz glänzt.

Eine andere Möglichkeit ist
SQL-Code:
Not exists(select....)
was aber meist nicht so performant ist.

jobo 4. Aug 2016 11:18

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Ja, das bietet sich an, wenn einem ein gefundenes Element als Abbruchkriterium reicht - und der Optimizer das auch versteht und die Abfragen entsprechend aufbaut, bzw. beim 1. Treffer dann auch abbricht.
Das trifft ja nicht so richtig Deinen Fall, oder?

p80286 4. Aug 2016 11:56

AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
 
Zitat:

Zitat von jobo (Beitrag 1344147)
Ja, das bietet sich an, wenn einem ein gefundenes Element als Abbruchkriterium reicht - und der Optimizer das auch versteht und die Abfragen entsprechend aufbaut, bzw. beim 1. Treffer dann auch abbricht.

Es geht darum festzulegen ob eine Akte "Lebt". Der Standardwert ist "nein", d.h. wenn die Eingangsvorraussetzung (
SQL-Code:
caseevent.eventkey=119
) nicht gegeben ist, ist mir herzlich egal was es sonst noch für Informationen gibt, d.h. in diesen Fällen muß ich nicht auf (
SQL-Code:
iskillerevent
prüfen. Was mir auf Grund der vorhandenen Daten einiges erspart. Darauf gekommen bin ich durch eine Äußerung von Markus "Datenbanken sind Mengenorientiert"

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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