23 May 2005

Baumstrukturen mit Oracle abbilden

Quelle: Lorenz Graf, COR Infexpert AG

Ausgangslage

In der Tabelle EXAMPLETREE wird ein Baum abgebildet. Via der NODE_ID lässt sich die PARENT_ID oder mittels dieser wiederum die Childnodes des Parents ermitteln.

CREATE TABLE EXAMPLETREE
(
NODE_ID NUMBER(10) NOT NULL,
PARENT_ID NUMBER(10) NOT NULL
);

Um nun die Struktur ausgehend einer Knoten ID abwärts zu ermitteln, kann man entweder im Programmcode einen Algorithmus implementieren, welcher die Children IDs rekursiv ermittelt oder man verwendet die Werkzeuge von Oracle (START WITH / CONNECT BY) und kapselt somit diese Logik in der Datenbank.

Die nachfolgende SELECT Abfrage ermittelt alle Children IDs unterhalb einer NODE_ID und ordnet diese absteigend nach Strukturlevel.


SELECT NODE_ID,LEVEL
FROM FIN_P430_CORP_NODE_CHILDREN
START WITH PARENT_ID = 6000
CONNECT BY PRIOR NODE_ID = PARENT_ID
ORDER BY LEVEL DESC;