我需要您关于访问存储在数据库中的有向图的帮助.
请考虑以下有向图
1->2
2->1,3
3->1
Run Code Online (Sandbox Code Playgroud)
表存储这些关系:
create database test;
\c test;
create table ownership (
parent bigint,
child bigint,
primary key (parent, child)
);
insert into ownership (parent, child) values (1, 2);
insert into ownership (parent, child) values (2, 1);
insert into ownership (parent, child) values (2, 3);
insert into ownership (parent, child) values (3, 1);
Run Code Online (Sandbox Code Playgroud)
我想提取从节点可到达的图形的所有半连接边(即忽略方向的连接边).即,如果我从parent = 1开始,我想要以下输出
1,2
2,1
2,3
3,1
Run Code Online (Sandbox Code Playgroud)
我正在使用postgresql.
我修改了Postgres手册上的例子来解释递归查询,并且我已经调整了连接条件以"向上"和"向下"(这样做我忽略了方向).我的查询如下:
\c test
WITH RECURSIVE graph(parent, child, path, depth, …Run Code Online (Sandbox Code Playgroud)