Ich habe eine hierarchische Tabelle mit dem Namen Employee_Hierarchy in Oracle mit den Spalten entity_code , parent_entity_code , entity_name und entity_role ohne Zyklus. Das untergeordnete untergeordnete Element in einer anderen Tabelle mit dem Namen Client , das mit dem untergeordneten untergeordneten Element der hierarchischen Tabelle verbunden ist, mit entity_code. Ich muss die Daten in einer einzeiligen Hierarchie anzeigen, wobei der Spaltenname an die Rolle angehängt wird.
Beispielbeispiel:
Struktur:
Hierarchische Tabelle:
Die unterste Tabelle des untergeordneten Elements:
Erwartetes Ergebnis:
Gibt es eine Möglichkeit, das erwartete Ergebnis durch Oracle-Abfrage zu erhalten? Und das erwartete Ergebnis hängt von der Eingabe ab, was bedeutet, dass es nicht immer von einem Wurzelelement aus startet, sondern von einem beliebigen Knoten, zum Beispiel Teamleitung (Shail), zu unterstem Kind.
( Hinweis : Wenn eine obere Hierarchie fehlt, ist der parent_code des aktuellen Knotens der Parent-Code der oberen Hierarchie. Das fehlende Hierarchieelement ist im erwarteten Ergebnis leer.)
Vielen Dank im Voraus.
In Ihren Abfrageergebnissen erwarten Sie, dass bestimmte Rollen eine bestimmte Position in der Hierarchie einnehmen. Manager ist die erste Ebene, Teamleiter sind zweite, Entwickler sind dritte. So können Sie Ihre hierarchische Tabelle behandeln, als ob es nicht wäre. Dies macht die Abfrage sehr lesbar:
%Vor% Und wenn Sie die Ergebnisse auf die Abteilung des Teamleiters Shail beschränken wollen, fügen Sie einfach die entsprechende WHERE
-Klausel hinzu:
Hier ist eine Möglichkeit, dies zu tun, mit Joins. Eine Alternative besteht darin, die beiden Tabellen zu kombinieren und eine hierarchische Abfrage durchzuführen - aber das ist wirklich das Gleiche (eine hierarchische Abfrage ist nichts anderes als ein rekursiver Self-Join).
%Vor%Ausgabe :
%Vor%Tags und Links sql oracle hierarchical-data