Home

FAQ SQL

Diese Seiten sind vor allem für mich Privat gedacht.

Sollte trotzdem jemand interessantes finden, bitte schön, ein angenehmer Nebeneffekt 8-)

Oracle: Hierarchie


Frage:

Oracle: Hierarchie

Antwort:

Hierarchische Abfragen ermöglichen es, Daten basierend auf einer natürlichen hierarchischen Beziehung ("Vater und Sohn Beziehungen") zwischen den Zeilen einer Tabelle abzurufen. Mit hierarchischen Abfragen ist es möglich, eine Baumstruktur in der Tabelle darzustellen. Dieser Typ von Abfrage kann nur durchgeführt werden, wenn zwischen den Zeilen in einer Tabelle eine Beziehung besteht (z.B. Mitarbeiternummer und Vorgesetztennummer).

Syntax:

SELECT [LEVEL], column, expr...
FROM table
[WHERE conditions]
START WITH conditions
CONNECT BY PRIOR condtions;

wobei

LEVEL            eine Pseudospalte ist, die zählt, wie viele Ebenen nach unten man sich bewegt hat,
START WITH den Ausgangspunkt der hierarchischen Abfrage festlegt und
CONNECT BY PRIOR die Beziehung zwischen Vater- und Kindspalten angibt.


Beispiel:

COLUMN hierarchie FORMAT A15
BREAK ON deptno
SELECT LPAD (' ', 3*LEVEL -3) || ename hierarchie , LEVEL, empno, mgr, deptno
FROM emp
CONNECT BY PRIOR empno = mgr
START WITH ename = 'KING';

 

HIERARCHIE LEVEL EMPNO MGR DEPTNO
-----------------------------------
KING 1 7839 10
JONES 2 7566 7839 20
SCOTT 3 7788 7566
ADAMS 4 7876 7788
FORD 3 7902 7566
SMITH 4 7369 7902
BLAKE 2 7698 7839 30
ALLEN 3 7499 7698
WARD 3 7521 7698
MARTIN 3 7654 7698
TURNER 3 7844 7698
JAMES 3 7900 7698
CLARK 2 7782 7839 10
MILLER 3 7934 7782