![]() |
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:
Es gibt da zwar noch ein paar Felder mehr, aber die sind uninteressant.
MainTable: casekey
Eventtable: casekey,eventkey,eventdate,caseisdead, eventdate ist null oder gefüllt(kann auch Zukunft sein!; caseisdead ist 0|1 ) Gruß K-H Die CODE-Tags hatten den Inhalt verschluckt, mit CODE=SQL geht's wieder |
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:
(v_event ist caseevent + Beschreibung/Codierung etc. der Events, so daß ich nicht mit eventkeys hantieren muß)
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 ; Gruß K-H |
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? |
AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
Zitat:
Gruß K-H |
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. |
AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
Zitat:
SQL-Code:
was aber meist nicht so performant ist.
Not exists(select....)
|
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? |
AW: Tot oder lebend : Zusammenfassung verschiedener Ergeignisse bzw NichtEreignisse
Zitat:
SQL-Code:
) 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 (
caseevent.eventkey=119
SQL-Code:
prüfen. Was mir auf Grund der vorhandenen Daten einiges erspart. Darauf gekommen bin ich durch eine Äußerung von Markus "Datenbanken sind Mengenorientiert"
iskillerevent
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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