楼主: dingjun123

[精华] 【PDF已传上】准备写一个oracle高级sql的参考资料

[复制链接]
论坛徽章:
0
51#
发表于 2008-10-28 16:00 | 只看该作者
顶顶顶顶顶顶顶
绝对的好贴
太实用了,非常感谢

使用道具 举报

回复
论坛徽章:
24
生肖徽章:狗
日期:2006-09-07 10:14:43数据库板块每日发贴之星
日期:2008-07-26 01:02:20生肖徽章2007版:兔
日期:2008-10-13 11:10:11奥运会纪念徽章:铁人三项
日期:2008-10-24 13:27:21开发板块每日发贴之星
日期:2008-12-27 01:01:09生肖徽章2007版:马
日期:2009-11-18 10:45:032010新春纪念徽章
日期:2010-03-01 11:21:02ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51ERP板块每日发贴之星
日期:2011-05-18 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
52#
发表于 2008-10-28 17:19 | 只看该作者
支持!!!!

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:篮球
日期:2008-10-24 13:29:38
53#
发表于 2008-10-28 17:28 | 只看该作者
等待你的PDF横空问世!

使用道具 举报

回复
论坛徽章:
85
2008新春纪念徽章
日期:2008-02-13 12:43:03双黄蛋
日期:2011-06-17 11:07:502011新春纪念徽章
日期:2011-02-18 11:42:472011新春纪念徽章
日期:2011-01-04 10:24:022010年世界杯参赛球队:荷兰
日期:2010-08-28 00:09:112010年世界杯参赛球队:科特迪瓦
日期:2010-03-02 12:36:542010新春纪念徽章
日期:2010-03-01 11:07:242010新春纪念徽章
日期:2010-03-01 11:07:242010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:意大利
日期:2009-12-31 14:41:24
54#
发表于 2008-10-28 17:32 | 只看该作者
嗯,不错,再支持lz一下

使用道具 举报

回复
论坛徽章:
4
生肖徽章2007版:猪
日期:2009-04-02 18:03:35生肖徽章2007版:兔
日期:2009-06-10 17:40:482011新春纪念徽章
日期:2011-02-18 11:42:47鲜花蛋
日期:2011-08-02 16:25:06
55#
发表于 2008-10-28 23:36 | 只看该作者
pdf在哪里呀,pdf在哪里呀

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
56#
 楼主| 发表于 2008-10-28 23:42 | 只看该作者
不要急啊,很快就来了!这几天在学习c++,还有什么corba,搞死我了!老大折磨我啊,会的j2ee,oracle之类的不让我整,让我整c++,corba去了!

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鼠
日期:2009-05-26 18:39:292010年世界杯参赛球队:科特迪瓦
日期:2010-08-23 22:05:09灰彻蛋
日期:2011-12-20 13:18:46ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:142013年新春福章
日期:2013-02-25 14:51:24
57#
发表于 2008-10-29 19:43 | 只看该作者
我是个新手,对oracle很有兴趣,近来读你的层次查询更新版的,看了一半觉得几个地方不太明白 还请指教,谢谢!

1、prior关键字,父子关系的确定。
5.2.2中有
方向:
1.
自顶向下遍历:就是先由根节点,然后遍历子节点。column_1表示父key,column_2表示子key。即这种情况下:connect by prior key=key表示自顶向下,等同于connect by key=prior key.
例如:

select
level,id,manager_id,last_name, title from s_emp


start
with
manager_id
=2


connectbyid=prior manager_id;--自下而上遍历
---------------------------
你这里标题写的是自顶而下,而下面的示例代码的最后给的注释 却是“自下而上”。矛盾啊!?
我猜是不是这样的?
select
level,id,manager_id,last_name, title from s_emp

start
with
manager_id
=2

connect
by
id=prior manager_id;--自顶而下遍历
这个是自顶而下,因为 按照 connect by prior key=key 来看凡是有prior的应该是父,查询找出了"子"
即id,id是结果集的一个属性列。我没查资料不知道是不是猜错了?



2、  5.23节语句不是很连贯,逻辑看不太懂。
原文:
例如现在的需求是,输出s_emp等级报表,root节点的last_name不变,比如第2等级,也就是level=2的前面加两个’_’符号,level=3的前面加4个。这样我们可以得到一个公式就是:

Lpad(last_name,length(last_name)+(level*2)-1,’_’)

其中一句“比如第2等级”,该句上下文不是很连贯。读不懂描述的是啥。而且注意到这个公式和下文的代码中的公式也是不一样的。代码中给出的公式中是(level*2)-2是减2 而不是减1。


我猜你可能是想说
例如现在的需求是,输出s_emp等级报表,root节点的last_name不变,其他等级每低一级前缀两个”_”
但这样公式应该是
(level-1)*2


3、5.2.6节的 “7)合计层次”
2个需求的示例代码的connect by部分。
原文:
select last_name,salary,(
  select sum(salary) from
s_emp
start with id=a.id –让每个节点都成为root
connect by prior id=manager_id) sumsalary
from s_emp a;

如果父子关系是我理解的那样,那么是否应该是这样的呢?
connect by id = prior manager_id











使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
58#
 楼主| 发表于 2008-10-29 22:05 | 只看该作者
父子关系是相对的概念,父-->子就是起点只有一个父,子有很多,子还有子,子与子之间也有父子关系,子--->父呢,我们可以有很多个子,然后找到共同的父,我画图不方便,你可以画个树状图看看就行了,而且这种关系是相对的,你可以从其他角度来得到父子关系,本例是从员工表出发,当然对于员工来说,经理就是父,员工本身是子,那么:
connect by prior 父key=子key表示自顶向下,等同于connect by 子key=prior 父key.
这里可以理解为connect by prior id=manager_id 或者connect by manager_id=prior_id
自顶向下可以理解为你的查询结果按照你的条件来说,只有一个起点,剩下的行都是在这个起点上发展起来的子孙或树枝

-------------------------------------
select
level,id,manager_id,last_name, title from s_emp
start
with
manager_id=2
connect
by
id=prior manager_id;--自顶而下遍历

这个的确是自下向上,不是自顶向下自上向下的特点是只有一个根为起点,其他的都在这个基础上发展的子孙,自下向上就不同了,从子孙到根,从子孙到根。。。。有很多个这样的过程。------------------------------------------
Lpad(last_name,length(last_name)+(level*2)-1,’_’)
笔误
-----------------------------------------
select last_name,salary,(
  select sum(salary) from
s_emp
start with id=a.id--让每个节点都成为root
connect by prior id= manager_id) sumsalary
from s_emp a;
这个是每个节点都是root的例子,采用的是自顶向下,比如第一行的值sum(salary)肯定和select sum(salary) from s_emp;结果是一样的


[ 本帖最后由 dingjun123 于 2008-10-29 22:21 编辑 ]

使用道具 举报

回复
论坛徽章:
26
2010年世界杯参赛球队:葡萄牙
日期:2012-09-20 14:59:08密尔沃基雄鹿
日期:2012-03-20 16:57:19海蓝宝石
日期:2012-07-26 23:23:38奥运会纪念徽章:乒乓球
日期:2012-09-07 16:24:16奥运会纪念徽章:足球
日期:2012-09-07 16:24:16马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2012-12-31 12:03:56蜘蛛蛋
日期:2012-11-29 17:20:08
59#
发表于 2008-10-30 00:00 | 只看该作者
继续支持,等待PDF

使用道具 举报

回复
论坛徽章:
5
2008新春纪念徽章
日期:2008-02-13 12:43:03奥运会纪念徽章:篮球
日期:2008-07-25 17:36:50ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:53:54ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19
60#
发表于 2008-10-30 17:48 | 只看该作者

最近不来这个论坛

但还是要支持一下了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表