Heim > Datenbank > Oracle > So fragen Sie untergeordnete Knoten in Oracle rekursiv ab

So fragen Sie untergeordnete Knoten in Oracle rekursiv ab

WBOY
Freigeben: 2022-01-25 14:38:03
Original
3386 Leute haben es durchsucht

In Oracle können Sie die SELECT-Anweisung verwenden, um untergeordnete Knoten rekursiv abzufragen. Die Funktion dieser Anweisung besteht darin, eine einfache Abfrage für Tabellendaten durchzuführen. Die Syntax lautet „SELECT * FROM table name START WITH condition 1 CONNECT BY PRIOR condition 2“. WO-Bedingung 3".

So fragen Sie untergeordnete Knoten in Oracle rekursiv ab

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.

Wie fragt Oracle rekursiv untergeordnete Knoten ab?

Grammatikstruktur

SELECT ... FROM    + 表名  START WITH + 条件1 CONNECT BY PRIOR + 条件2  WHERE  + 条件3
Nach dem Login kopieren

Bedingung 1: Es handelt sich um eine qualifizierende Anweisung für den Wurzelknoten. Natürlich können die qualifizierenden Bedingungen gelockert werden, um mehrere Wurzelknoten, also mehrere Bäume, zu erhalten. In der Verbindungsbeziehung sind zusätzlich zu Spalten auch Spaltenausdrücke zulässig. Die START WITH-Klausel ist optional und wird verwendet, um zu identifizieren, welcher Knoten als Wurzelknoten der Suchbaumstruktur verwendet wird. Wenn diese Klausel weggelassen wird, bedeutet dies, dass alle Zeilen, die die Abfragebedingungen erfüllen, als Wurzelknoten verwendet werden.

Bedingung 2: Es handelt sich um eine Verbindungsbedingung, in der PRIOR verwendet wird, um den vorherigen Datensatz darzustellen, zum Beispiel CONNECT BY PRIOR STUDENT_ID = GRADE_ID, was bedeutet, dass die STUDENT_ID des vorherigen Datensatzes die GRADE_ID dieses Datensatzes ist , der Vater dieses Datensatzes ist der vorherige Datensatz. Die CONNECT BY-Klausel gibt an, dass jede Datenzeile in hierarchischer Reihenfolge abgerufen wird, und gibt an, dass die Daten in der Tabelle in einer baumstrukturierten Beziehung verbunden werden. Der PRIOR-Operator muss vor einer der beiden Spalten der Join-Beziehung stehen. Bei Eltern-Kind-Beziehungen zwischen Knoten stellt der PRIOR-Operator den übergeordneten Knoten auf der einen Seite und den untergeordneten Knoten auf der anderen Seite dar und bestimmt so, ob die Reihenfolge, in der die Baumstruktur durchsucht wird, von oben nach unten oder von unten nach oben erfolgt.

Bedingung 3: Es handelt sich um eine Filterbedingung, die zum Filtern der zurückgegebenen Datensätze verwendet wird.

Hinweis:

1. CONNECT BY PRIOR wird in strukturierten Abfragen verwendet.

2 Die Funktion von START WITH... CONNECT BY PRIOR... besteht, vereinfacht gesagt, darin, eine Baumstruktur innerhalb und außerhalb von a zu speichern Tisch.

Traverse zum Wurzelknoten durch die untergeordneten Knoten.

select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
Nach dem Login kopieren

Traverse die untergeordneten Knoten durch den Wurzelknoten (mit Ausnahme des Wurzelknotens).

select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
Nach dem Login kopieren

Traverse die untergeordneten Knoten durch den Wurzelknoten (einschließlich des Wurzelknotens).

select * from persons.dept start with deptid=0 connect by prior deptid=paredeptid
Nach dem Login kopieren

Kann über das Level-Schlüsselwort übergeben werden. Abfragen des Levels.

select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
Nach dem Login kopieren

Hinweis:

Beginne mit ... durch Verwendung verbinden, was folgt, ist der rekursive Startwert.

Der Ausgangspunkt der Rekursion ist der Ort, an dem die Rekursion beginnt. Standardmäßig kann nur die Startzeile abgefragt werden, die die Bedingungen erfüllt, und es wird keine rekursive Abfrage durchgeführt connect by prior Es ist relevant und gibt die Richtung der Abfrage an.

Übung: Ermitteln Sie den obersten Knoten über untergeordnete Knoten

select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
Nach dem Login kopieren

Tabellenstruktur

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
Nach dem Login kopieren

Abteilungs-ID Übergeordnete Abteilungs-ID (Abteilungs-ID) Abteilungsname

Empfohlenes Tutorial: „

Oracle Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo fragen Sie untergeordnete Knoten in Oracle rekursiv ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage