我在 postgres 9.3.5 中有一个表格,如下所示:
CREATE TABLE customer_area_node
(
id bigserial NOT NULL,
customer_id integer NOT NULL,
parent_id bigint,
name text,
description text,
CONSTRAINT customer_area_node_pkey PRIMARY KEY (id)
)
我查询:
WITH RECURSIVE c AS (
SELECT *, 0 as level, name as path FROM customer_area_node WHERE customer_id = 2 and parent_id is null
UNION ALL
SELECT customer_area_node.*,
c.level + 1 as level,
c.path || '/' || customer_area_node.name as path
FROM customer_area_node
join c ON customer_area_node.parent_id = c.id
)
SELECT * FROM c ORDER BY path;
这似乎适用于构建诸如 building1/floor1/room1、building1/floor1/room2 等路径。
我想要做的就是轻松地将其转换为代表树结构的 json,我被告知可以使用 row_to_json 进行操作。
作为一个合理的替代方案,我可以通过任何其他方式将数据格式化为更有效的机制,这样我实际上可以轻松地将其转换为实际的树结构,而无需在 / 上放置大量的 string.splits。
有没有一种相当简单的方法可以用 row_to_json 做到这一点?