![]() |
Datenbank: oracle • Version: 10 • Zugriff über: egal
Oracle DB spinnt
hallo zusammen,
set zwei Stunden versuche ich den Fehler zu finden komme aber nicht zu Potte
Code:
diese Abfrage liefert 130 Datensätze wobei man bei zwei Datensätzen einträge in Productpatent sieht.
select v_srbib.Casereference,v_srbib.casekey, origin,henattorney,division,site,productpatent.*
from v_srbib ,v_references ,v_persons ,(select count(casekey) cnt,familykey from cases where familykey is not null group by familykey) src ,productpatent where v_srbib.casekey=src.familykey(+) and src.cnt is null and v_srbib.Casetypekey=2 and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241462) and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241534) and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241561) -- and not exists ( select * from productpatent where productpatent.casefamilykey=v_srbib.casekey and productpatentkey is not null ) and v_srbib.casekey=v_references.casekey(+) and v_srbib.casekey=v_persons.casekey(+) and v_srbib.casereference not like 'T%' and v_srbib.casekey=productpatent.casefamilykey(+) -- and productpatentkey(+) is null order by v_srbib.casereference
Code:
diese Version liefert 130 Datensätze ohne das man Einträge in Productpatent sieht.
..
and v_srbib.casereference not like 'T%' and v_srbib.casekey=productpatent.casefamilykey(+) and productpatentkey(+) is null order by v_srbib.casereference folgende Versionen liefern als ergebnis 0 Datensätze
Code:
...
and v_srbib.casekey=v_persons.casekey(+) and v_srbib.casereference not like 'T%' and v_srbib.casekey=productpatent.casefamilykey(+) and productpatentkey is null order by v_srbib.casereference
Code:
könnt Ihr mir einen Tip geben was ich übersehen habe?
select v_srbib.Casereference,v_srbib.casekey, origin,henattorney,division,site,productpatent.*
from v_srbib ,v_references ,v_persons ,(select count(casekey) cnt,familykey from cases where familykey is not null group by familykey) src ,productpatent where v_srbib.casekey=src.familykey(+) and src.cnt is null and v_srbib.Casetypekey=2 and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241462) and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241534) and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241561) and not exists ( select * from productpatent where productpatent.casefamilykey=v_srbib.casekey and productpatentkey is not null ) and v_srbib.casekey=v_references.casekey(+) and v_srbib.casekey=v_persons.casekey(+) and v_srbib.casereference not like 'T%' and v_srbib.casekey=productpatent.casefamilykey(+) -- and productpatentkey(+) is null order by v_srbib.casereference select v_srbib.Casereference,v_srbib.casekey, origin,henattorney,division,site,productpatent.* from v_srbib ,v_references ,v_persons ,(select count(casekey) cnt,familykey from cases where familykey is not null group by familykey) src ,productpatent where v_srbib.casekey=src.familykey(+) and src.cnt is null and v_srbib.Casetypekey=2 and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241462) and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241534) and not exists ( select * from caseevent where caseevent.casekey=v_srbib.casekey and caseevent.Eventkey=20241561) and exists ( select * from productpatent where productpatent.casefamilykey=v_srbib.casekey and productpatentkey is not null ) and v_srbib.casekey=v_references.casekey(+) and v_srbib.casekey=v_persons.casekey(+) and v_srbib.casereference not like 'T%' and v_srbib.casekey=productpatent.casefamilykey(+) -- and productpatentkey(+) is null order by v_srbib.casereference (wenn ich das productpatent-Zeugs weglasse ist ales vollkommen in Ordnung) Gruß K-H |
AW: Oracle DB spinnt
Was erwartest Du denn für Ergebnisse?
Welche Inhalte stehen in Variante 130:2 in ProductPatentKey? (HIer ist die Exists Clause auskommentiert, es ist ein einfacher Outer Join) In Variante 130:0 wird zusätzlich ProductPatentKey auf Null eingeschränkt. Was ist mit der Existszeile von ProduktPatent in Variante 0:0? Weiter unten führst Du zweimal das gleiche(?) Statement auf, die exists Zeile ist aber einmal negiert. 1. Es darf keine Sätze geben, deren join mit productpatent Werte mit Produktpatentkey NULL enthalten 2. Es muss einen Satz geben, dessen join mit productpatent Werte mit Produktpatentkey NULL enthält |
AW: Oracle DB spinnt
Also erwarten würde ich bei
Code:
128 Datensätze, die zwei gefüllten sollten damit außen vor sein
and productpatentkey is null
ursprünglich wollte ich das mit dem
Code:
erreichen was aber darauf hinauslief, daß wohl alle V_srbib Einträge auch Einträge in productpatent hätten.
not exists()
Das vollkommen bescheuerte ist, daß ich nur zwei Einträge sehe, Die nächstliegende Erklärung wäre, daß da irgendwo ein Syntaxfehler lauert, aber ich kann nichts erkennen. Na gut am Montag gehts weiter, schönes Wochenende. Gruß K-H |
AW: Oracle DB spinnt
Es ist Montag und der Fehler ist erkannt,
so funktioniert es
Code:
130 Datensätze
and not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey in (20241462,20241534,20241561))
und so nicht:
Code:
kein Datensatz
and not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey=20241462)
and not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey=20241534) and not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey=20241561) wenn jemand weiß warum, dann her damit, sonst schau ich mal Weihnachten was dahinter steckt. Gruß K-H |
AW: Oracle DB spinnt
and mit or verwechselt und Klammer drum fehlt.
Code:
and (not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey=20241462)
or not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey=20241534) or not exists ( select * from caseevent where caseevent.casekey=cases.casekey and caseevent.Eventkey=20241561)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz