sqladvanced
Recursive CTE for Tree Queries
Traverse hierarchical data like org charts and nested categories using PostgreSQL recursive common table expressions.
sqlPress ⌘/Ctrl + Shift + C to copy
-- Table: categories (id, name, parent_id)
-- Get full category tree from a root node
WITH RECURSIVE category_tree AS (
-- Base case: start from root
SELECT id, name, parent_id, 0 AS depth, name::text AS path
FROM categories
WHERE parent_id IS NULL
UNION ALL
-- Recursive step: join children
SELECT c.id, c.name, c.parent_id, ct.depth + 1,
ct.path || ' > ' || c.name
FROM categories c
INNER JOIN category_tree ct ON c.parent_id = ct.id
WHERE ct.depth < 10 -- safety limit
)
SELECT id, name, depth, path
FROM category_tree
ORDER BY path;
-- Get all ancestors of a specific node
WITH RECURSIVE ancestors AS (
SELECT id, name, parent_id
FROM categories
WHERE id = 42 -- target node
UNION ALL
SELECT c.id, c.name, c.parent_id
FROM categories c
INNER JOIN ancestors a ON a.parent_id = c.id
)
SELECT * FROM ancestors;Use Cases
- Org chart navigation
- Nested category menus
- File system tree queries
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
sqladvanced
Recursive CTE for Hierarchical Data
Query hierarchical data like org charts, categories, and file trees using recursive CTEs.
Best for: Querying organizational hierarchies
#sql#cte
sqlintermediate
Common Table Expression (CTE) Patterns
Use CTEs to write readable, composable SQL queries with WITH clauses for complex logic.
Best for: complex queries
#sql#cte
sqlintermediate
Recursive CTE - Technique 41
Recursive query traversal
Best for: database operations
#sql#database
pythonbeginner
Hierarchical Clustering
Data science technique: hierarchical-clustering
Best for: machine learning
#data#machine-learning