跟公交换乘有点类似的路由算法
A点 B点
广州 深圳
深圳 珠海
江门 珠海
东莞 深圳
湛江 江门现在我想从广州到东莞,那就有 广州——》深圳——》东莞
广州到江门:广州——》深圳——》珠海——》江门有没有哪位兄弟接触过这种算法,指导一下。
A点 B点
广州 深圳
深圳 珠海
江门 珠海
东莞 深圳
湛江 江门现在我想从广州到东莞,那就有 广州——》深圳——》东莞
广州到江门:广州——》深圳——》珠海——》江门有没有哪位兄弟接触过这种算法,指导一下。
SQL> --广州->江门,其它替换起止地
SQL> with test as (
2 select '广州' A, '深圳' B from dual union all
3 select '深圳' A, '珠海' B from dual union all
4 select '江门' A, '珠海' B from dual union all
5 select '东莞' A, '深圳' B from dual union all
6 select '湛江' A, '江门' B from dual),
7 tt as (
8 SELECT a, b
9 FROM test
10 UNION ALL
11 SELECT b, a FROM test)
12 SELECT p
13 FROM (SELECT LEVEL lv, tt.*, '广州'||sys_connect_by_path(b, '->') p
14 FROM tt
15 WHERE b <> '广州'
16 START WITH a = '广州'
17 CONNECT BY nocycle PRIOR tt.b = tt.a)
18 WHERE p LIKE '%->江门';
P
--------------------------------------------------------------------------------
广州->深圳->珠海->江门
SQL>