相关疑难解决方法(0)

使用递归查询访问有向图,就好像它是一个无向图

我需要您关于访问存储在数据库中的有向图的帮助.

请考虑以下有向图

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)

sql postgresql recursion graph common-table-expression

11
推荐指数
1
解决办法
2027
查看次数