This article brings you relevant knowledge about Oracle. It mainly introduces the article about parsing ORACLE tree structure query. The article expands on the topic in detail. Let’s take a look at it together. I hope Helpful to everyone.
Recommended tutorial: "Oracle Video Tutorial"
In our daily programming, we often encounter tree structures Represents, for example, organizational structures, administrative divisions, etc. These are often displayed through a table in the database. Here we take a simple administrative division table as an example. In actual use, other description fields and levels can be added to it.
#The table is associated with ID and PID to achieve tree structure storage. The table creation and data statements are as follows:
-- 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', '即墨市');
How to query the tree structure? Oracle provides recursive query for query. The basic syntax is as follows:
SELECT [Column]….. FEOM [Table] WHERE Conditional1 START WITH Conditional2 CONNECT BY PRIOR Conditional3 ORDER BY [Column]
Description:
Let’s look at specific examples below:
1. Query all sub-nodes under Shandong Province
SELECT * FROM TREETEST t START WITH t.PID=1 CONNECT BY PRIOR t.ID = t.PID
where the ID is 1 is the node of Shandong Province, and the query results are as follows:
#2. Query the next-level child node of Qingdao City (note the difference from the above, all Child nodes and next-level child nodes)
3. If you need to connect Qingdao City, Shandong Province, etc. to display, you can use SYS_CONNECT_BY_PATH to achieve this
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
The query results are as follows:
4. In the same way, you can also proceed from bottom to top. Query
SELECT * FROM TREETEST t START WITH t.ID=8 CONNECT BY t.ID = PRIOR t.PID
Recommended tutorial: "Oracle Video Tutorial"
The above is the detailed content of One article analyzing ORACLE tree structure query. For more information, please follow other related articles on the PHP Chinese website!