免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1395 | 回复: 7
打印 上一主题 下一主题

这样的SQL语句怎么写?请教真正的ORACLE高手。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-11 11:40 |只看该作者 |倒序浏览
有表tst_tab结构如下:
   create table tst_tab
    (
      servid  number(4),
      serial number(,
      nextpointer number(
    );
     
    每条记录的字段nextpoiter总是指向下条记录的字段serial;当该记录是最后
   一条记录时,则nextpointer为0。
   表中存在如下数据:
    servid        serial       nextpointer
      1000          2000       100
      1000          8000       1
      1000          100         8000
      1000          1             0
      这些数据在数据库存在是无序的。

     如何通过一条SQL语句得到如下结果?????
    servid         serial      nextpointer
      1000          2000       100
      1000          100         8000
      1000          8000       1
      1000          1             0

论坛徽章:
0
2 [报告]
发表于 2003-11-11 12:57 |只看该作者

这样的SQL语句怎么写?请教真正的ORACLE高手。

o

tree遍历

用start with ... connect by

至于 0 值,可以用
nvl

论坛徽章:
0
3 [报告]
发表于 2003-11-11 12:59 |只看该作者

这样的SQL语句怎么写?请教真正的ORACLE高手。

this is wrong,wait i think again.

论坛徽章:
0
4 [报告]
发表于 2003-11-11 13:59 |只看该作者

这样的SQL语句怎么写?请教真正的ORACLE高手。

TO:rollingpig   
start with ... connect by ...如何写???
HappyDaiDai 该用户已被删除
5 [报告]
发表于 2003-11-11 14:08 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2003-11-11 14:18 |只看该作者

这样的SQL语句怎么写?请教真正的ORACLE高手。

你这样的问题用cursor来解决非常简单,为什么一定要一条sql来解决呢??
复杂的sql带来的往往是性能的下降,花哨的sql并不能证明水平有多高的。如果你的开发人员,你应该明白这个。

论坛徽章:
0
7 [报告]
发表于 2003-11-11 14:23 |只看该作者

这样的SQL语句怎么写?请教真正的ORACLE高手。

我看用一条语句可能不太现实,
可以这样建立一个数组,以x,x,0的servid为a[1],
初始化:设置tempserial=0;
(select servid into :a[1] from tst_tab where  nextpointer='0';
并将serial选到临时变量里。
循环以下部分。直到tempserial=32768
select nvl(serial,3276 into :tempserial where nextpointer=tempserial
select servid into :a[2] from tst_tab where nextpointer=:tempserial。
把得到的数组反向插入表里,就得到需要的结果。

论坛徽章:
0
8 [报告]
发表于 2003-11-11 14:34 |只看该作者

这样的SQL语句怎么写?请教真正的ORACLE高手。

To:nocode
您说的没有错。

但是我还是希望您也想想方法,思考一下,看看有没有不用游标
直接写出来的SQL语句,先谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP