Dieser Artikel vermittelt Ihnen relevantes Wissen über Oracle. Der Artikel konzentriert sich auf das Thema und bietet einen detaillierten Blick darauf alle.
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:
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.PIDzu erreichen. Die Abfrageergebnisse lauten wie folgt:
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!