Hierarchical Queries v10
A hierarchical query is a type of query that returns the rows of the result set in a hierarchical order based upon data forming a parent-child relationship. A hierarchy is typically represented by an inverted tree structure. The tree is comprised of interconnected nodes. Each node may be connected to none, one, or multiple child nodes. Each node is connected to one parent node except for the top node which has no parent. This node is the root node. Each tree has exactly one root node. Nodes that don’t have any children are called leaf nodes. A tree always has at least one leaf node - e.g., the trivial case where the tree is comprised of a single node. In this case it is both the root and the leaf.
In a hierarchical query the rows of the result set represent the nodes of one or more trees.
Note
It is possible that a single, given row may appear in more than one tree and thus appear more than once in the result set.
The hierarchical relationship in a query is described by the CONNECT BY
clause which forms the basis of the order in which rows are returned in the result set. The context of where the CONNECT BY
clause and its associated optional clauses appear in the SELECT
command is shown below.
SELECT <select_list> FROM <table_expression> [ WHERE ...] [ START WITH <start_expression> ] CONNECT BY { PRIOR <parent_expr> = <child_expr> | <child_expr> = PRIOR <parent_expr> } [ ORDER SIBLINGS BY <column1> [ ASC | DESC ] [, <column2> [ ASC | DESC ] ] ... [ GROUP BY ...] [ HAVING ...] [ <other> ...]
select_list
is one or more expressions that comprise the fields of the result set. table_expression
is one or more tables or views from which the rows of the result set originate. other
is any additional legal SELECT
command clauses. The clauses pertinent to hierarchical queries, START WITH, CONNECT BY
, and ORDER SIBLINGS BY
are described in the following sections.
Note
At this time, Advanced Server does not support the use of AND
(or other operators) in the CONNECT BY
clause.
defining_the_parent_child_relationship selecting_the_root_nodes organization_tree_in_the_sample_application node_level ordering_the_siblings retrieving_the_root_node_with_connect_by_root retrieving_a_path_with_sys_connect_by_path