比如
stops表有以下记录
id stop_name
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
stops表有以下记录
id stop_name
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
解决方案 »
- 大家好,帮我看一下这个SQL语句怎么实现啊
- 怎样 来自不同用户下的要有关系表来构建视图???
- 急!!关于Oracle 的查询语句···
- 网游服务器的数据库都是ORACLE吗?
- 一道面试题目求解!
- Oracle里面 start with connect by 如果取查出来的最后的一个值?
- 那位大侠有oracle视频教材
- 为什么我的oracle在不上网的时候可以被访问,不过一上网就不能被访问了提示:没有监听,不过一下网就好了
- 一个非常非常非常奇怪的问题,请 高手参与
- oracle数据基本常识
- 我写的求按某个字段(CHAR型)的排序后的最大一条记录竟然如此麻烦,select * from (select * from tablename order by to_number(field1) d
- 从sql server导进来的数据,为什么查询不到?
id line_name
1 1路
2 2路
3 3路
ID line_id stop_id upordown serial
1 1 1 up 1
2 1 2 up 2
3 1 3 up 3
4 1 4 up 4
5 1 5 up 5
6 1 6 up 6
7 1 7 up 7
8 1 7 down 1
9 1 6 down 2
10 1 5 down 3
11 1 4 down 4
12 1 3 down 5
13 1 1 down 6
Have a look at what happens if you introduce instead an entity called "line segment" which defines the piece of the line between two consecutive stops. (This, I think, breaks up a M-N into a 1-M and a 2-M). Have a look at "connect by prior" to walk along the line, segment by segment.
start_id end_id changenum change_1 change_2 line_id
1 2 0 1
1 3 0 1
1 4 0 1
1 5 0 1
1 6 0 1
1 7 0 1
2 3 0 1
2 4 0 1
2 5 0 1
2 6 0 1
2 7 0 1
3 1 0 1
3 4 0 1
3 5 0 1
3 6 0 1
3 7 0 1
4 1 0 1
4 3 0 1
4 5 0 1
4 6 0 1
4 7 0 1
5 1 0 1
5 3 0 1
5 4 0 1
5 6 0 1
5 7 0 1
6 1 0 1
6 3 0 1
6 4 0 1
6 5 0 1
6 7 0 1
7 1 0 1
7 3 0 1
7 4 0 1
7 5 0 1
7 6 0 1
lineKey integer,
lineName varchar2(20)
);create table line_seg(
lineKey integer,
fromStop varchar2(1),
toStop varchar2(1)
);insert into line values(1,'First');
insert into line values(2,'Second');
insert into line values(3,'Circle');insert into line_seg values(1,'A','B');
insert into line_seg values(1,'B','C');
insert into line_seg values(1,'C','D');
insert into line_seg values(1,'D','E');
insert into line_seg values(1,'E','F');insert into line_seg values(2,'B','C');
insert into line_seg values(2,'C','E');insert into line_seg values(3,'A','B');
insert into line_seg values(3,'B','C');
insert into line_seg values(3,'C','D');
insert into line_seg values(3,'D','A');
select lineName from line l
where 'D' IN
(select s.toStop from line_seg s
connect by prior s.toStop = s.fromStop
and s.lineKey = l.linekey
and s.toStop <> 'B'
start with s.fromStop = 'B'
and s.lineKey = l.lineKey);