Cet article vous apporte des connaissances pertinentes sur Oracle. Il présente principalement un article sur l'analyse des requêtes de structure arborescente ORACLE. L'article se concentre sur le sujet et fournit un contenu détaillé. J'espère que cela vous sera utile. tout le monde.
Tutoriel recommandé : "Tutoriel vidéo Oracle"
Dans la programmation quotidienne, on rencontre souvent la représentation de structures arborescentes, comme les organisations, les divisions administratives, etc. Ceux-ci sont souvent affichés via un tableau dans la base de données. Nous prenons ici comme exemple une simple table de division administrative. En utilisation réelle, d'autres champs et niveaux de description peuvent y être ajoutés.
La table est associée à l'ID et au PID pour réaliser le stockage de la structure arborescente. La création de la table et les instructions de données sont les suivantes :
-- 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', '即墨市');
Comment interroger la structure arborescente ? Oracle fournit une requête récursive pour la requête. La syntaxe de base est la suivante :
SELECT [Column]….. FEOM [Table] WHERE Conditional1 START WITH Conditional2 CONNECT BY PRIOR Conditional3 ORDER BY [Column]
Description :
Regardons des exemples spécifiques ci-dessous :
1. Interroger Shandong Tous les nœuds enfants situés sous la province
SELECT * FROM TREETEST t START WITH t.PID=1 CONNECT BY PRIOR t.ID = t.PID
Celui avec l'ID 1 est le nœud de la province du Shandong. Les résultats de la requête sont les suivants :
2. Nœud enfant de niveau de la ville de Qingdao (notez qu'il est différent de ce qui précède, tous les nœuds enfants et les nœuds enfants de niveau suivant)
3 Si vous devez connecter la ville de Qingdao, la province du Shandong, etc. , vous pouvez utiliser SYS_CONNECT_BY_PATH pour obtenir
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
Les résultats de la requête sont les suivants :
4. De la même manière, vous pouvez également interroger de bas en haut
SELECT * FROM TREETEST t START WITH t.ID=8 CONNECT BY t.ID = PRIOR t.PID
Recommandé. tutoriel : "Tutoriel vidéo Oracle"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!