ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 2497|回复: 8

[SQL] 还是关于connect by子句的问题

[复制链接]
认证徽章
论坛徽章:
0
发表于 2017-7-3 23:11 | 显示全部楼层 |阅读模式
本帖最后由 hxsmomo 于 2017-7-12 15:25 编辑

connect by [prior] parent key=child key,自顶向下遍历
connect by [prior] child key=parent key,自底向下遍历----这里更正为自底向上遍历。170712

1.这里的parent key和child key是怎么确定的?根据我的练习,Scott用户的emp表中,empno是parent key,mgr是child key。但是我没有真正的理解。难道是因为mgr是empno的子集吗?
2.这个自顶向下遍历具体的遍历顺序是怎样的? 是先序遍历吗?那么自底向下遍历呢?----这里更正为自底向上遍历。170712     
论坛徽章:
15
秀才
日期:2017-08-11 15:30:05技术图书徽章
日期:2017-08-23 14:17:00秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05
发表于 2017-7-3 23:24 | 显示全部楼层
本帖最后由 只是甲 于 2017-7-3 23:32 编辑

业务知识需要理清楚
每个员工都有一个empno,不管是普通员工,还是经理,还是总裁等。
mgr是员工直属领导的工号,例如普通员工的直属领导是经理,那么普通员工的mgr就是经理的empno。
你需要显示 scott 员工及其下属员工,就是  connect by prior empno= mgr
要显示scott员工及其上级部门员工,就是   connect by empno= prior mgr


运算符PRIOR被放置于等号前后的位置,决定着查询时的检索顺序。

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-7-3 23:26 | 显示全部楼层
只是甲 发表于 2017-7-3 23:24
业务知识需要理清楚
每个员工都有一个empno,不管是普通员工,还是经理,还是总裁等。
mgr是员工直属领导 ...

这个和parent key和child key有什么关系?

使用道具 举报

回复
论坛徽章:
15
秀才
日期:2017-08-11 15:30:05技术图书徽章
日期:2017-08-23 14:17:00秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05
发表于 2017-7-3 23:35 | 显示全部楼层
本帖最后由 只是甲 于 2017-7-3 23:37 编辑
hxsmomo 发表于 2017-7-3 23:26
这个和parent key和child key有什么关系?

我更新帖子了
parent key 和 child key 是根据业务逻辑来确定的


connect by [prior] parent key=child key,自顶向下遍历
connect by [prior] child key=parent key,自底向下遍历


自底向下  这个感觉有问题,你看的资料估计理解有点问题吧,已经是最下了,没有下级部门了,哪里还需要展示级联关系?


你需要显示 scott 员工及其下属员工,就是 start with empno=7788 connect by prior empno= mgr
要显示scott员工及其上级部门员工,就是  start with empno=7788 connect by empno= prior mgr


运算符PRIOR被放置于等号前后的位置,决定着查询时的检索顺序。

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-7-3 23:42 | 显示全部楼层
本帖最后由 hxsmomo 于 2017-7-3 23:56 编辑
只是甲 发表于 2017-7-3 23:35
我更新帖子了
parent key 和 child key 是根据业务逻辑来确定的

笑cry.
是我写错了。是自底向上。

根据业务逻辑来确定。根据你的解释,我理解的是:empno可以看做是mgr的来源,所以empno看做是parent key,mgr是child key。是吗?期待回复。

(*^__^*) 嘻嘻……

使用道具 举报

回复
论坛徽章:
15
秀才
日期:2017-08-11 15:30:05技术图书徽章
日期:2017-08-23 14:17:00秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05秀才
日期:2017-08-11 15:30:05
发表于 2017-7-3 23:55 | 显示全部楼层
hxsmomo 发表于 2017-7-3 23:42
笑cry.
是我写错了。是自底向上。

我刚测试了下 ,我理解也有一定的问题

start with empno = 7788 connect by prior mgr =  empno    --显示 scott以及scott的主管以及主管的主管的信息

start with empno = 7788  connect by prior empno =  mgr    --显示 scott以及scott的下属以及下属的下属的信息

start with empno = 7788 connect by empno= prior mgr       --显示 scott以及scott的主管以及主管的主管的信息
start with empno = 7788  connect by  mgr =prior empno      --显示 scott以及scott的下属以及下属的下属的信息


有两种显示 上下级关系的办法,一种是通过 prior的顺序,一个是通过 parent key和child key 调换顺序。

empno和mgr这个比较特殊,empno即可以是 parent key也可以是child key。
很简单,mgr其实就是emp表中员工直接主管的empno,scott员工的empno是别的员工的mgr,同时,scott的mgr也是另外员工的empno。

把我的四个例子运行一遍,然后看看输出结果,最主要的是看 empno和mgr对应的关系,理清楚业务,然后熟悉语法就ok了。

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-7-3 23:57 | 显示全部楼层
只是甲 发表于 2017-7-3 23:55
我刚测试了下 ,我理解也有一定的问题

start with empno = 7788 connect by prior mgr =  empno    -- ...

多谢你了。

使用道具 举报

回复
论坛徽章:
481
榜眼
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09
发表于 2017-7-4 00:25 | 显示全部楼层
学习气氛很好嘛。
如果你把经理员工的层次关系理解为一棵树,一般认为树根朝上,也就是最高层的总经理是树根。经理是父亲节点,员工是子节点,父与子是一对多的关系。

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2017-7-4 09:41 | 显示全部楼层
newkid 发表于 2017-7-4 00:25
学习气氛很好嘛。
如果你把经理员工的层次关系理解为一棵树,一般认为树根朝上,也就是最高层的总经理是树 ...


是的,也就是数据结构里面的树。嘻嘻。

感谢各位大侠的指点。

我感觉我已经更上一层楼了。

使用道具 举报

回复

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

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月30日前

活动链接>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表