加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

使用SQL查找节点之间的路径

发布时间:2021-01-24 19:49:32 所属栏目:MySql教程 来源:网络整理
导读:我有两个mysql表:节点和关系 CREATE TABLE `nodes` ( `id` int(10) unsigned NOT NULL auto_increment,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `relations` ( `node_id` int(10) unsigned NOT NULL,`related_node_id` int(10

我有两个mysql表:节点和关系

CREATE TABLE `nodes` (
  `id` int(10) unsigned NOT NULL auto_increment,PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `relations` (
  `node_id` int(10) unsigned NOT NULL,`related_node_id` int(10) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

假设节点中有四行:节点1和2共享一个关系,节点2和3,1和4,4和3

INSERT INTO `relations` VALUES (1,2);
INSERT INTO `relations` VALUES (2,3);
INSERT INTO `relations` VALUES (1,4);
INSERT INTO `relations` VALUES (4,3);

是否有任何算法可以获取相关节点之间的路径?喜欢

+---------+------------------+---------+
| node_id | related_node_id  | route   |
+---------+------------------+---------+
|       1 |                2 | 1/2     |
|       2 |                3 | 2/3     |
|       1 |                4 | 1/4     |
|       4 |                3 | 4/3     |
|       1 |                3 | 1/2/3   |
|       1 |                3 | 1/4/3   |
+---------+-----------+------+---------+
最佳答案 在原始MySQL中,没有简单的方法可以做到这一点.

您可以安装OQGRAPH(这是一个用于存储图形的插件存储引擎),在其中创建图形表并发出如下查询:

SELECT  *
FROM    oqtable
WHERE   latch = 1
        AND origid = 1
        AND destid = 3

该算法将使用Dijkstra的算法查找1和3之间的最短路径.

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读