网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.关于Oracle for zLinux的几个问题.
.Oracle 数据库优化的R方法(Metho.
.如何获得Oracle的隐含参数.
.[技术]dba管理,探索常用的语句!.
.Oracle9i里指针共享的增强.
.rman总结.
.DBA如何以别人的身份注册数据库.
.如何有效地利用数据字典.
.入侵Oracle数据库时常用的操作命.
.sqlserver中插入值后,马上得到自.
.ORACLE中BFILE字段的使用研究.
.Oracle性能究极优化 中.
.建立与Oracle服务器连接的两种连.
.增加或修改列时的规则.
.solaris8 下不起图形界面安装ora.
.bin目录下各文件意义及使用方法.
.通过JDBC连接oracle数据库的技巧.
.何时Oracle使用绑定变量性能反而.
.将Access数据库移植到Oracle.
.Oracle数据库技术(24).

在Oracle层次查询中给SIBLINGS排序

发表日期:2008-2-9


Oracle SELECT语句中的START WITH和CONNECT BY子句自动阻断一个层次。缺少这项特性,就需要一个复杂的自联接来确定行之间的逻辑联系。START WITH子句指定被认为是层次起点,或“根”的一行或几行。然后CONNECT BY PRIOR子句指明哪些行彼此关联。 例如,列表A中的查询从Oracle HR样本模式的EMPLOYEES表中生成一个“Reports To”列表。
column "Reports To" format a30 set pagesize 9999 SELECT LPAD(' ', 2*(LEVEL-1))last_name "Reports To", employee_id FROM employees START WITH employee_id IN (101, 102) CONNECT BY PRIOR employee_id = manager_id /
列表A
LEVEL伪列表明报告当前嵌套的深度,这里我使用LPAD雇员姓名对它们进行缩排。START WITH条件指出只有雇员101和102被认为是起点。然后CONNECT BY PRIOR子句将一行中的employee_id列与另一行的manager_id列连接起来,指出谁向谁报告。 假如你在HR模式中运行这个查询,你会注重到某个经理列表中的姓没有分类,它们以Oracle在处理层次时碰到它们的顺序排列。 假如你希望下属以字母顺序排列,你可以尝试对原始的last_name列使用ORDER BY。但是,这样会破坏层次,把它变回一个单调的姓名列表。 你还可以首先对伪列LEVEL使用ORDER BY,它说明某个非凡行在层次中的深度。这同样也会破坏层次,首先会列出所有的经理,然后是向他们报告的雇员。 在Oracle 10g(两个版本)中,现在很轻易实现这一点:你可以使用新的SIBLINGS要害字建立正确的顺序。其语法如下:
ORDER SIBLINGS BY <eXPression>
因此在查询结尾处增加下面这个子句:
ORDER SIBLINGS BY last_name
将会保护层次,并在每个等级中以字母顺序排列雇员的姓。注重最初的last_name用作“Reports To”的别名。“Reports To”中的额外空间会影响排序,因此必须使用最初的last_name。列表B中是增加ORDER SIBLINGS BY前后的输出结果。
SQL> @siblings_without_orderby Reports To EMPLOYEE_ID ------------------------------ ----------- Kochhar 101 Whalen 200 Mavris 203 Baer 204 Higgins 205 Gietz 206 Greenberg 108 Faviet 109 Chen 110 Sciarra 111 Urman 112 Popp 113 De Haan 102 Hunold 103 Ernst 104 Austin 105 Pataballa 106 Lorentz 107 18 rows selected. SQL> @siblings_with_orderby Reports To EMPLOYEE_ID ------------------------------ ----------- De Haan 102 Hunold 103 Austin 105 Ernst 104 Lorentz 107 Pataballa 106 Kochhar 101 Baer 204 Greenberg 108 Chen 110 Faviet 109 Popp 113 Sciarra 111 Urman 112 Higgins 205 Gietz 206 Mavris 203 Whalen 200 18 rows selected. SQL>
列表B

上一篇:专家调优秘密之改善Oracle数据库性能 人气:692
下一篇:Oracle 10g自动工作负载信息库剖析 人气:700
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐