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
WBOYoriginal
2022-01-25 14:38:033411parcourir

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

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

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

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

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

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

Structure de la table

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)

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!

Déclaration:
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