这条SQL该怎么写?

k2 2007-02-12 02:45:28
这条SQL该怎么写?


表结构如下:

部门表
部门ID 上级ID 部门 部门负责人 备注
1000 XXX公司 张三
1001 1000 销售部 李四
1002 1000 技术部 王二
1003 1002 开发组 小三
1004 1002 维护组 小四
1005 1000 财务部 赵五


XXX公司是部门的最上级,下面有销售部和技术部两部门,而技术部下面又有开发组和维护组两下属部门(实际情况肯定部门更多。。。)
我现在要的到技术部以及次部门下属部门的所有记录,该怎么些?
要的结果如下:
1002 1000 技术部 王二
1003 1002 开发组 小三
1002 1002 维护组 小四

数据库是10G XE
...全文
313 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
doer_ljy 2007-02-13
  • 打赏
  • 举报
回复
楼上挺自信啊!
正解,确实可以结贴了!
stone1126 2007-02-13
  • 打赏
  • 举报
回复
select * from tablename
start with 部门ID='1002'
connect by prior 部门ID= 上级ID

可以结帖了.
/
stone1126 2007-02-13
  • 打赏
  • 举报
回复
试试
start with
connect by
应该可以解决你的问题.
小李木耳 2007-02-13
  • 打赏
  • 举报
回复
我的回答不对。取消!
小李木耳 2007-02-13
  • 打赏
  • 举报
回复
select *
from 部门表
where 部门='技术部'
or 上级ID>(select max(b.上级ID) from 部门表 b where b.部门='技术部')
dong820304 2007-02-12
  • 打赏
  • 举报
回复
select *
from 部门表
connect by prior 部门ID=上级ID
start with 部门表.部门='技术部'

这是自连接的最简单的写法,如果有什么条件可在from后加上where条件.
intotheheart 2007-02-12
  • 打赏
  • 举报
回复
select * from 部门表 start with 部门='XXX公司' connect by prior 部门=上级ID
k2 2007-02-12
  • 打赏
  • 举报
回复
楼上的,要是还有下级部门呢?
jinanjiang 2007-02-12
  • 打赏
  • 举报
回复
select *from 部门表 where 部门='技术部' or 上级ID in (select 部门ID from 表 where 部门='技术部')

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧