Heim  >  Artikel  >  Datenbank  >  Ein Artikel zur Analyse der ORACLE-Baumstrukturabfrage

Ein Artikel zur Analyse der ORACLE-Baumstrukturabfrage

WBOY
WBOYnach vorne
2022-09-05 17:48:242517Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Oracle. Der Artikel konzentriert sich auf das Thema und bietet einen detaillierten Blick darauf alle.

Ein Artikel zur Analyse der ORACLE-Baumstrukturabfrage

Empfohlenes Tutorial: „Oracle Video Tutorial

In der täglichen Programmierung stoßen wir häufig auf die Darstellung von Baumstrukturen, wie Organisationen, Verwaltungsabteilungen usw. Diese werden häufig über eine Tabelle in der Datenbank angezeigt. Hier nehmen wir als Beispiel eine einfache Verwaltungsaufteilungstabelle. Bei der tatsächlichen Verwendung können weitere Beschreibungsfelder und Ebenen hinzugefügt werden.

Die Tabelle ist mit ID und PID verknüpft, um eine Baumstrukturspeicherung zu erreichen. Die Tabellenerstellung und Datenanweisungen lauten wie folgt:

-- Create table
create table TREETEST
(
  id   NVARCHAR2(50),
  pid  NVARCHAR2(50),
  name NVARCHAR2(50)
)
insert into TREETEST (ID, PID, NAME) values ('1', null, '山东省');
insert into TREETEST (ID, PID, NAME) values ('2', '1', '青岛市');
insert into TREETEST (ID, PID, NAME) values ('3', '1', '烟台市');
insert into TREETEST (ID, PID, NAME) values ('4', null, '河南省');
insert into TREETEST (ID, PID, NAME) values ('5', null, '河北省');
insert into TREETEST (ID, PID, NAME) values ('6', '2', '市南区');
insert into TREETEST (ID, PID, NAME) values ('7', '2', '市北区');
insert into TREETEST (ID, PID, NAME) values ('8', '2', '即墨市');

Wie frage ich die Baumstruktur ab? Oracle bietet rekursive Abfragen für Abfragen. Die grundlegende Syntax lautet wie folgt:

SELECT [Column]…..
  FEOM [Table]
  WHERE Conditional1
  START WITH Conditional2
  CONNECT BY PRIOR Conditional3
  ORDER BY [Column]

Beschreibung:

  • Bedingung 1 --- Filterbedingungen, alle zurückgegebenen Datensätze filtern.
  • Bedingung 2 – Die begrenzende Bedingung des Wurzelknotens. Natürlich können Sie die Berechtigungen auch lockern, um mehrere Wurzelknoten zu erhalten, also mehrere Bäume zu erhalten.
  • Bedingung 3 – Die Verknüpfungsbedingung, der Zweck besteht darin, die Beziehung zwischen Vater und Sohn anzugeben. Führen Sie eine rekursive Abfrage basierend auf dieser Beziehung durch (ID=PID in der obigen Tabelle).
1. Fragen Sie Shandong alle untergeordneten Knoten unterhalb der Provinz ab. Der Knoten mit der ID 1 lautet wie folgt:

2. Untergeordneter Knoten der Stadt Qingdao (beachten Sie, dass er sich von den oben genannten unterscheidet, alle untergeordneten Knoten und untergeordneten Knoten der nächsten Ebene)

3. Wenn Sie Qingdao City, die Provinz Shandong usw. verbinden müssen, um sie anzuzeigen , Sie können SYS_CONNECT_BY_PATH verwenden, um

SELECT *
  FROM TREETEST t
 START WITH t.PID=1
CONNECT BY PRIOR t.ID = t.PID
zu erreichen. Die Abfrageergebnisse lauten wie folgt:

Ein Artikel zur Analyse der ORACLE-Baumstrukturabfrage

4. Auf die gleiche Weise können Sie auch von unten nach oben abfragen

SELECT t.ID, SYS_CONNECT_BY_PATH(t.NAME, '\') AS INDU_NAME
  FROM TREETEST t
 START WITH t.PID IS NULL
CONNECT BY PRIOR t.ID = t.PID

Recom ausgebessertes Tutorial : „Oracle-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEin Artikel zur Analyse der ORACLE-Baumstrukturabfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen