My problem is that I have this functional CTE statement in SQL. It works like a charm to find the deep hierarchy for my agency with id = 13.
Now what I want it to do is give me a result for multiple Ids (more specific all my leaves in the tree).
The statement for finding all the leaves are stated below the CTE.
Can this be done? Or do I need to run the query from code for each ID?
WITH parents AS (
SELECT id, name, parent_id, 0 AS relative_depth
FROM agencies
where id = 13
UNION ALL
SELECT cat.id, cat.name, cat.parent_id, p.relative_depth - 1
FROM agencies cat, parents p
WHERE cat.id = p.parent_id
)
SELECT parents.id, parents.name as agency, parents.relative_depth FROM parents
Example Output with id=13:
id name relative_depth
13 D 0
12 C -1
8 B -2
2 A -3
Example Output with id=11:
id name relative_depth
11 E 0
2 A -1
So for the 4 leaves that i have from the below statement...
Leaves statement:
SELECT id
FROM agencies t
WHERE NOT EXISTS (SELECT 1
FROM agencies
WHERE parent_id = t.id)
I want to get a result like this:
leaf id name relative_depth
13 13 D 0
13 12 C -1
13 8 B -2
13 2 A -3
11 11 E 0
11 2 A -2
. . . .
. . . .
/Kind regards