Maison > base de données > Oracle > Comment interroger de manière récursive les nœuds enfants dans Oracle

Comment interroger de manière récursive les nœuds enfants dans Oracle

WBOY
Libérer: 2022-01-25 14:38:03
original
3371 Les gens l'ont consulté

Dans Oracle, vous pouvez utiliser l'instruction select pour interroger de manière récursive les nœuds enfants. La fonction de cette instruction est d'effectuer une requête simple sur les données de la table. La syntaxe est "SELECT * FROM table name START WITH condition 1 CONNECT BY PRIOR condition 2. OÙ état 3".

Comment interroger de manière récursive les nœuds enfants dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

Comment Oracle interroge-t-il récursivement les nœuds enfants

Structure grammaticale

SELECT ... FROM    + 表名  START WITH + 条件1 CONNECT BY PRIOR + 条件2  WHERE  + 条件3
Copier après la connexion

Condition 1 : il s'agit d'une instruction de qualification pour le nœud racine. Bien sûr, les conditions de qualification peuvent être assouplies pour obtenir plusieurs nœuds racines, c'est-à-dire plusieurs arbres ; dans la relation de connexion, en plus des colonnes, les expressions de colonnes sont également autorisées. La clause START WITH est facultative et est utilisée pour identifier le nœud utilisé comme nœud racine de l'arborescence de recherche. Si cette clause est omise, cela signifie que toutes les lignes qui satisfont aux conditions de requête sont utilisées comme nœuds racine.

Condition 2 : Il s'agit d'une condition de connexion, dans laquelle PRIOR est utilisé pour représenter l'enregistrement précédent, par exemple, CONNECT BY PRIOR STUDENT_ID = GRADE_ID, ce qui signifie que le STUDENT_ID de l'enregistrement précédent est le GRADE_ID de cet enregistrement, c'est-à-dire , le père de cet enregistrement est l'enregistrement précédent. La clause CONNECT BY indique que chaque ligne de données sera récupérée dans un ordre hiérarchique et spécifie que les données de la table seront connectées dans une relation arborescente. L'opérateur PRIOR doit être placé devant l'une des deux colonnes de la relation de jointure. Pour les relations parent-enfant entre nœuds, l'opérateur PRIOR représente le nœud parent d'un côté et le nœud enfant de l'autre côté, déterminant ainsi si l'ordre dans lequel la structure arborescente est recherchée est descendant ou ascendant.

Condition 3 : Il s'agit d'une condition de filtrage, utilisée pour filtrer les enregistrements renvoyés.

Remarque :

1. CONNECT BY PRIOR est utilisé dans les requêtes structurées

2 La fonction de START WITH... CONNECT BY PRIOR... est de stocker une structure arborescente à l'intérieur et à l'extérieur d'une table.

Traversez vers le nœud racine à travers les nœuds enfants.

select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
Copier après la connexion

Traversez les nœuds enfants via le nœud racine (à l'exclusion du nœud racine).

select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
Copier après la connexion

Traversez les nœuds enfants via le nœud racine (y compris le nœud racine).

select * from persons.dept start with deptid=0 connect by prior deptid=paredeptid
Copier après la connexion

Peut être transmis via le mot-clé de niveau Rechercher le niveau.

select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
Copier après la connexion

Remarque :

commencez par... connectez-vous par utilisation, ce qui suit commence par est la graine récursive.

La graine de récursion est l'endroit où commence la récursion. Le "prior" après la connexion. Par défaut : seule la ligne de départ qui remplit les conditions peut être interrogée, et aucune requête récursive ne sera effectuée

Les champs placés après la connexion ; par prior Il est pertinent et indique la direction de la requête.

Exercice : Obtenez le nœud supérieur via les nœuds enfants

select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
Copier après la connexion

Structure de la table

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
Copier après la connexion

ID du département Identifiant du département parent (ID du département) Nom du département

Tutoriel recommandé : "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:php.cn
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