Maison > base de données > Oracle > le corps du texte

Un article analysant la requête de structure arborescente ORACLE

WBOY
Libérer: 2022-09-05 17:48:24
avant
2577 Les gens l'ont consulté

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.

Un article analysant la requête de structure arborescente ORACLE

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)
)
Copier après la connexion
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', '即墨市');
Copier après la connexion

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]
Copier après la connexion

Description :

  • Condition 1 --- Filtrer les conditions, filtrer tous les enregistrements renvoyés.
  • Condition 2---La condition limite du nœud racine. Bien sûr, vous pouvez également assouplir les autorisations pour obtenir plusieurs nœuds racines, c'est-à-dire obtenir plusieurs arbres.
  • Condition 3---La condition de lien, le but. est de donner la relation entre le père et le fils. Quoi, effectuez une requête récursive basée sur cette relation (ID=PID dans le tableau ci-dessus)
  • Tri --- Trier tous les enregistrements renvoyés

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
Copier après la connexion

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)

Un article analysant la requête de structure arborescente ORACLE

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal