Hierarchical data structures often arise in enterprise systems like Siebel, where relationships between entities such as Orders and Order Line Items need to be visualized. Oracle SQL’s START WITH, CONNECT BY, and ORDER SIBLINGS BY clauses make it easy to manage and query such relationships.
This blog will explain how to use these clauses to create and traverse hierarchies, with examples from Siebel’s Order Management system. We’ll also explore how to maintain sibling order for better data representation.
Hierarchical Queries Overview
Hierarchical queries allow you to work with data structured in a tree-like format. Using the START WITH and CONNECT BY clauses, you can traverse and visualize parent-child relationships.
Key Components
START WITH: Defines the root of the hierarchy.CONNECT BY: Specifies the relationship between parent and child rows.ORDER SIBLINGS BY: Ensures sibling nodes are ordered based on specified criteria.
Scenario: Orders and Order Line Items in Siebel
Table Structure
Assume we have two entities:
- Orders: Representing customer orders.
- Order Line Items: Representing the products/services within an order.
Sample Data

Here:
- Orders ( Order Num, row_id) form the parent entities.
- Order Line Items (
row_id,prod_id) form the children of Orders. - Order_id links line items to their respective orders.
Writing the Hierarchical Query
SELECT
level AS hierarchy_level,(case when order_num is null then Lpad('|->',(LEVEL-1)*5)||prod_id else order_num end) "Order/Item"
FROM
(
SELECT
row_id AS id,
order_num,
NULL AS parent_id,
NULL AS prod_id
FROM
s_order
UNION ALL
SELECT
row_id AS id,
NULL AS order_num,
order_id AS parent_id,
prod_id AS prod_id
FROM
s_order_item
)
START WITH
parent_id IS NULL
CONNECT BY
PRIOR id = parent_id
ORDER SIBLINGS BY
prod_id desc;
Explanation
START WITH PARENT_ID IS NULL: Starts with root nodes (orders with no parent).CONNECT BY PRIOR ID = PARENT_ID: Links parent rows to their children.ORDER SIBLINGS BY: Ensures sibling nodes (e.g., line items) are ordered by prod_id.
Output

Key Features of ORDER SIBLINGS BY
When dealing with hierarchical data, the ORDER SIBLINGS BY clause ensures that child nodes under the same parent are displayed in a specific order. This is particularly useful when:
- Line items need to appear alphabetically.
- Items are sorted by a quantity or price attribute.
Practical Applications
- Customer Orders: Display orders and associated line items in a structured format.
- Catalog Hierarchies: Represent product categories and subcategories.
- Project Dependencies: Visualize tasks and their dependencies.
Best Practices
- Use proper indexing on ID and Parent ID columns for better query performance.
- Avoid circular references in the hierarchy.
- Use meaningful column aliases for better readability.
By leveraging START WITH, CONNECT BY, and ORDER SIBLINGS BY, you can efficiently manage and query hierarchical data in Oracle SQL. Whether you’re dealing with Siebel Order Management or other nested data structures, these tools offer powerful and flexible solutions.
Let me know if you have specific questions about implementing hierarchical queries in your Siebel environment!
When working with telecom order management in Siebel, it’s often essential to view the hierarchical structure of order items for a given order number. This structure helps in understanding parent-child relationships, dependencies, and configurations within the order. If you’re looking for an efficient way to fetch and display such order item hierarchies directly through SQL, check out my detailed blog here where I’ve shared a step-by-step query along with an explanation. This query simplifies the process by leveraging key joins and hierarchical functions, making it easy to analyze order data.
Discover more from Let's Simplify
Subscribe to get the latest posts sent to your email.