一个面试题
有如下信息:
起始地 目的地 距离(公里)
A B 1000
A C 1100
A D 900
A E 400
B D 300
D F 600
E A 400
F G 1000
C B 600
请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)。
构表语句
create table test(fr_ad char(2),
to_ad char(2),
len int);
insert into test values(‘A’,’B’,1000);
insert into test values(‘A’,’C’,1100);
insert into test values(‘A’,’D’,900 );
insert into test values(‘A’,’E’,400 );
insert into test values(‘B’,’D’,300 );
insert into test values(‘D’,’F’,600 );
insert into test values(‘E’,’A’,400 );
insert into test values(‘F’,’G’,1000);
insert into test values(‘C’,’B’,600 );
—
我个人的做法是
SQL> select fr_ad,lpad(‘>>’,2*(level-1),’>’)||to_ad step from test start with fr_ad=’A’ connect by nocycle prior to_ad=fr_ad;
FR STEP
— ——————————
A B
B >>D
D >>>>F
F >>>>>>G
A C
C >>B
B >>>>D
D >>>>>>F
F >>>>>>>>G
A D
D >>F
F >>>>G
A E
E >>A
A >>>>B
B >>>>>>D
D >>>>>>>>F
F >>>>>>>>>>G
A >>>>C
C >>>>>>B
B >>>>>>>>D
D >>>>>>>>>>F
F >>>>>>>>>>>>G
A >>>>D
D >>>>>>F
F >>>>>>>>G
26 rows selected.
这是10g的特性,如果不用特性怎么做呢?呵呵
知道其它答案的给我恢复一下
目前这篇文章有4条评论(Rss)评论关闭。