从关系数据库表创建邻接列表

时间:2016-10-18 05:37:13

标签: sql oracle recursive-query adjacency-list

我有一张这样的表

name  |  time
a     |  1:00
b     |  1:05
a     |  1:10
c     |  1:15
d     |  1:20
b     |  1:29
e     |  1:30
a     |  1:31
f     |  1:36

现在我每次都会得到,并希望上下5分钟的课程序列。

a  : a->b
b  : a->b->c
a  : b->a->c
c  : a->c->d
d  : c->d
.    .
.    .
.    .

我希望将这些序列存储在邻接列表中。如下表

parent_name | child_name | graph id
  a         |   b        |    1
  a         |   b        |    2
  b         |   c        |    2
  b         |   a        |    3
  a         |   c        |    3

有谁能告诉我如何使用SQL查询来做到这一点?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找嵌套集模型。它记录在enter image description here上。实现和示例是通用的,并且可以处理所有符合SQL的引擎,但是在Oracle中,您可以调整它,以便您可以从SELECT语句中的CONNECT BY子句中受益。