我有一个表格,表示边缘列表表示中的图形数据结构没有循环依赖:
________________
| id | from | to |
________________
| 1 | 3 | 4 |
| 2 | 3 | 5 |
| 4 | 5 | 7 |
________________
是否可以执行SQL查询,以便对于特定顶点v
,直接和间接检索由所有连接顶点组成的顶点集V
?
E.g。 retrieve_all_connected_vertices(3)
将返回集(4, 5, 7)
。
我正在研究的方法是使用MySQL支持的纯SQL语句(存储过程和类似的选项),或者与某种伪编程语言结合使用。我不是在寻找特定于语言的实现,尽管我将使用Scala用于此特定目的。
我知道我们可以基本上按递归方式跟踪链接,直到它到达最后的顶点,但是,如果有某种优化可用于减少内存使用或算法复杂度,我将很高兴
答案 0 :(得分:0)
普通查询将在代码中进行参数化。
SELECT vertices.to FROM vertices WHERE vertices.from = ?
你必须传递你想要的顶点作为输入,你需要一个可以传递参数的Scala SQL连接器。
顺便说一句,请注意也可能是MySQL关键字的列名。