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

So fragen Sie untergeordnete Knoten in Oracle ab

PHPz
PHPzOriginal
2023-04-18 09:07:171620Durchsuche

In Oracle-Datenbanken ist die Abfrage der untergeordneten Knoten eines Knotens eine häufige Anforderung, insbesondere beim Umgang mit großen hierarchischen Daten. In diesem Artikel stellen wir vor, wie Sie die CONNECT BY-Anweisung und die SYS_CONNECT_BY_PATH-Funktion von Oracle verwenden, um untergeordnete Knoten abzufragen.

Werfen wir zunächst einen Blick auf die CONNECT BY-Anweisung. Die CONNECT BY-Anweisung ist eine rekursive Abfrageanweisung von Oracle, die die Abfrage von Baumstrukturen oder hierarchischen Daten ermöglicht. Es gibt zwei Möglichkeiten, CONNECT BY zu verwenden: Eine besteht darin, die START WITH-Klausel zu verwenden, um den Startknoten der Abfrage anzugeben, und die andere darin, START WITH wegzulassen. In diesem Fall wird eine rekursive Abfrage für die gesamte Tabelle durchgeführt.

Nachfolgend geben wir ein einfaches Beispiel zur Veranschaulichung dieser Abfragemethode. Angenommen, wir haben eine Tabelle mit dem Namen „EMPLOYEE“, die Mitarbeiterinformationen enthält. Es gibt ein Feld „DEPT_ID“, das die Abteilung angibt, zu der der Mitarbeiter gehört, und ein Feld „EMP_ID“, das die eindeutige ID des Mitarbeiters darstellt.

Wir können alle Mitarbeiter mit „DEPT_ID“ als 100 durch die folgende Anweisung abfragen:

SELECT * FROM EMPLOYEE START WITH DEPT_ID = 100 CONNECT BY PRIOR EMP_ID = MANAGER_ID;

Diese Abfrageanweisung bedeutet, ihre untergeordneten Mitarbeiter rekursiv abzufragen, beginnend mit den Mitarbeitern mit „DEPT_ID“ als 100, wobei „PRIOR“ ein Schlüsselwort ist Stellt den Mitarbeiter der oberen Ebene dar. „MANAGER_ID“ ist ein Feld, das die ID des Managers der oberen Ebene des Mitarbeiters darstellt.

In den Abfrageergebnissen sehen wir die Informationen aller Mitarbeiter, deren „DEPT_ID“ 100 ist, und ihrer untergeordneten Mitarbeiter.

Diese Methode liefert jedoch nicht die Level-Informationen jedes Mitarbeiters, also das Level jedes Mitarbeiters. Zu diesem Zeitpunkt müssen wir die Funktion SYS_CONNECT_BY_PATH verwenden, um den vollständigen Pfad jedes Knotens abzurufen.

Hier ein Beispiel:

SELECT EMPLOYEE.*, LEVEL, SYS_CONNECT_BY_PATH(EMP_ID, '/') AS PATH
FROM EMPLOYEE
START WITH DEPT_ID = 100
CONNECT BY PRIOR EMP_ID = MANAGER_ID;

In den Abfrageergebnissen können wir die vollständigen Pfadinformationen jedes Mitarbeiters sehen, z. B. „/100/101/103“. Hier ist „/“ das Pfadtrennzeichen und „LEVEL“ ist eine Systemvariable, die die Ebenenebene des aktuellen Knotens angibt.

Darüber hinaus können wir auch andere Methoden verwenden, um untergeordnete Knoten abzufragen. Beispielsweise können wir das Schlüsselwort „WITH“ verwenden, um einen öffentlichen Ausdruck zu erstellen und ihn in der Abfrage zu verwenden. Diese Methode ist besser lesbar und erleichtert das Kombinieren von Abfragebedingungen.

Kurz gesagt, um die untergeordneten Knoten eines Knotens in der Oracle-Datenbank abzufragen, können Sie die CONNECT BY-Anweisung und die Funktion SYS_CONNECT_BY_PATH verwenden. In praktischen Anwendungen können je nach Bedarf unterschiedliche Abfragemethoden ausgewählt werden, um bessere Ergebnisse zu erzielen.

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

Stellungnahme:
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