Tôi đã có một bảng trong postgres 9.3.5 trông như thế này:Postgres truy vấn đệ quy với row_to_json
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)
)
tôi truy vấn với:
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;
này dường như làm việc để xây dựng những con đường như building1/floor1/room1, building1/floor1/room2, v.v.
Điều tôi muốn làm là dễ dàng biến nó thành một trong hai json đại diện cho cấu trúc cây mà tôi đã được thông báo rằng tôi có thể làm row_to_json. Là một lựa chọn hợp lý, bất kỳ cách nào khác tôi có thể định dạng dữ liệu thành một cơ chế hiệu quả hơn để tôi có thể dễ dàng biến nó thành một cấu trúc cây thực tế mà không cần phải có một chuỗi string.splits trên /.
Có cách nào dễ dàng hợp lý để thực hiện việc này với row_to_json không?
bạn có thể cung cấp dữ liệu mẫu không? –