badfsaadkl
Goto Top

PL SQL Auswertung Cursors

Moin zusammen,

ich habe eine kleine "herrausforderung", jedoch stehe ich gerade bissle auf dem Schlauch.
Ich benötige eine Auswertung, bei welchen unserer Incidents keine Objekt verknüpft ist.

Als Ausgang habe ich die Tabellen incident und obj_incident_link.
In der Tabelle incident sind wie der name schon sagt, alle Incidents aufgelistet.
Ob an dem Incident ein Objekt verknüpft ist, wird in der Tabelle obj_incident_link hinterlegt.
Sobald ein Objekt verknüpft ist, wird ein Eintrag in die Tabelle mit der IncidentID und ObjektID erstellt.

Ist an dem Incident kein Objekt verknüpft, gibt es auch keinen Eintrag in der Tabelle obj_incident_link.

Nun benötige ich einen Select, der für jede Incidentnummer in der Tabelle incident schaut, ob es einen Eintrag in der Tabelle
obj_incident_link gibt.
Sollte kein Eintrag in der Tabelle existieren, benötige ich die Incidentnummer (incident.naam)

Habe schon einmal angefangen, das ganze in Cursors einzutragen, jedoch komme ich aktuell nicht weiter, das ganze entsprechend auszuwerten.
Als Kommentar hab ich mal grob vermerkt, wie ich mir das so dachte.

Aktuell im Beispiel mal auf 2 Incidents eingegrenzt.

Ich bin über jeden Tipp dankbar, wie ich hier weiter machen kann.

Tabelle incident:
unid:	eindeutige ID des Incidents
naam:	Incident Nummer

Tabelle obj_incident_link
incidentid:	unid verknüpft aus der Tabelle Incident
objectid:	ID des Objektes.

set serveroutput on
declare
v_incid          number(255);

cursor cur_incident is
       select inc."unid" from "incident" inc  
       where inc."naam" in ('IC 15 08 00017','IC 15 08 00018')  
       order by inc."naam";  

cursor cur_link (v_linkref "obj_incident_link".incidentid%type) is  
       select * from "obj_incident_link" objlink  
       where objlink."incidentid" = v_linkref;  
       
begin
open cur_incident;
loop
  fetch cur_incident into v_incid;
  for cur_record in cur_link(v_incid) loop
  
--if (Eintrag vorhanden) then
--dbms_output.put_line (Incidentnummer || ' Verknüpfung vorhanden ');  
--else cur_link%NotFound
--dbms_output.put_line (Incidentnummer || ' Keine Verknüpfung vorhanden ');  
--end if;
  

Danke
Gruß
BadFsaadKl

Content-ID: 280087

Url: https://administrator.de/contentid/280087

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

LianenSchwinger
Lösung LianenSchwinger 13.08.2015 aktualisiert um 13:16:00 Uhr
Goto Top
Hallo BadFsaadKl,

das geht ganz leicht face-smile

SELECT inc.naam 
FROM incident inc
LEFT JOIN obj_incident_link objlink ON inc.unid = objlink.incidentid
WHERE objlink.incidentid IS NULL

G Jörg
BadFsaadKl
BadFsaadKl 13.08.2015 um 13:16:38 Uhr
Goto Top
Hi Jörg,

ok, so geht es natürlich wesentlich einfacher face-wink

Danke