ratloser99
Grünschnabel
Hallo zusammen,
ich habe eine Tabelle in einer ORACLE-DB (10g) mit Benutzern, die in verschiedenen hierarchisch geordneten Gruppen organisiert sind. Deren Daten (Vor-, Nachname, GRuppe, ...) habe ich mir in eine Tabelle ausgeben lassen. Nun möchte ich denen die Gruppenebene duch ein CONNECT_BY_PATH zuordnen:
Das Statement funktioniert soweit; ich bekomme die Ebenen durch einen Punkt getrennt ausgegeben (Ebene1.Ebene2.Eben3....) und habe sie in einer temporären Tabelle abgelegt. Nun muss ich jedoch davon die unterste Ebene wieder heraus finden, um die Zuordnung der Hierarchie zum Benutzer zu bekommen, das heißt z.B., befindet sich der Benutzer in der dritten Ebene, muss ich das 'Ebene1.Ebene2.Eben3....' wieder zu 'Ebene3' beschneiden
Mein bisheriger Ansatz sah so aus:
Damit kann ich jedoch nur eine (die oberste) Ebene abschneiden. Ich weiß jedoch nicht, wie tief die Ebenen geschachtelt sind. Wie kann ich also erreichen, dass mir nur der äußerst rechte String (nach dem letzten '.' ) ausgegeben wird? Eine andere Möglichkeit als das Aneinanderreihen über CONNECT_BY_PATH habe ich leider nicht.
Hat jemand eine Idee?
ich habe eine Tabelle in einer ORACLE-DB (10g) mit Benutzern, die in verschiedenen hierarchisch geordneten Gruppen organisiert sind. Deren Daten (Vor-, Nachname, GRuppe, ...) habe ich mir in eine Tabelle ausgeben lassen. Nun möchte ich denen die Gruppenebene duch ein CONNECT_BY_PATH zuordnen:
Code:
select
SYS_CONNECT_BY_PATH (w.name,'.')
from
repository.workgroup w
start with
w.parentwrkgroup_key is NULL
connect by
prior w.pkey = w.parentwrkgroup_key
order by 1;
Mein bisheriger Ansatz sah so aus:
Code:
Select
substr(parent_groups,INSTR(parent_groups,'.')+1)
from
tmp_group
Damit kann ich jedoch nur eine (die oberste) Ebene abschneiden. Ich weiß jedoch nicht, wie tief die Ebenen geschachtelt sind. Wie kann ich also erreichen, dass mir nur der äußerst rechte String (nach dem letzten '.' ) ausgegeben wird? Eine andere Möglichkeit als das Aneinanderreihen über CONNECT_BY_PATH habe ich leider nicht.
Hat jemand eine Idee?
Zuletzt bearbeitet: