1
WITH RECURSIVE gpid_path AS (
2
SELECT gp_1.geopoliticalid,
3
(gp_1.geopoliticalid)::text AS gpid
4
FROM ndb.geopoliticalunits gp_1
5
WHERE (gp_1.rank = 1)
6
UNION ALL
7
SELECT gpu_1.geopoliticalid,
8
concat(gpa.gpid, ',', gpu_1.geopoliticalid) AS concat
9
FROM (ndb.geopoliticalunits gpu_1
10
JOIN gpid_path gpa ON ((gpa.geopoliticalid = gpu_1.highergeopoliticalid)))
11
)
12
SELECT gp.geopoliticalid,
13
gpu.geopoliticalname,
14
gpu.geopoliticalunit,
15
gpu.rank,
16
(string_to_array(gp.gpid, ','::text))::integer[] AS path
17
FROM (gpid_path gp
18
JOIN ndb.geopoliticalunits gpu ON ((gpu.geopoliticalid = gp.geopoliticalid)))
19
ORDER BY gp.geopoliticalid;