ORACLE查询问题

IT小菜鸟_ 2011-05-19 07:20:03
表是这样的create table MODULE
(
MODULE_ID NUMBER(16) PRIMARY KEY NOT NULL,应用名称
MODULE_NAME VARCHAR(50) NOT NULL,应用名称
PARENT_MODULE NUMBER(16),父级
);
要求查出module_id,module_name,parent_module(有多少个)

100 基础数据管理 0
110 托管业务会员单位 100
111 新增 110
112 删除 110
113 修改 110
114 显示 110
120 保理业务会员单位 100
121 新增 120
122 删除 120
123 修改 120
124 显示 120
查处module_id,module_name,和每条数据有多少个子级
...全文
148 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT小菜鸟_ 2011-05-30
  • 打赏
  • 举报
回复
SELECT
t01.module_id,
t01.module_name,
t01.module_level,
t01.parent_module,
nvl(t02.cnt, 0) cnt
FROM

module t01,
(
SELECT
parent_module,
count(module_id) as cnt
FROM
module t03
GROUP BY
parent_module
) t02
WHERE
t01.module_id = t02.parent_module(+)
AND
delete_flag = '0'
ORDER BY
t01.module_id
IT小菜鸟_ 2011-05-23
  • 打赏
  • 举报
回复
还有就是,父级只取子集的值,不去孙子级
IT小菜鸟_ 2011-05-23
  • 打赏
  • 举报
回复
就是 6楼那样,谢谢啊
loveofmylife 2011-05-20
  • 打赏
  • 举报
回复
我上面写的sql得到的cnt值应该-1才对,因为这个cnt包含了根节点
loveofmylife 2011-05-20
  • 打赏
  • 举报
回复
楼主是想统计每个module_id下有多少子节点(包括孙子节点,一次类推)
那么这样试一下

scott@ORCL> select module_id,
2 module_name,
3 (select count(*)
4 from module t1
5 connect by prior module_id = parent_module
6 start with t1.module_id = t.module_id) cnt
7 from module t
8 group by module_id, module_name
9 ;

MODULE_ID MODULE_NAME CNT
---------- -------------------------------------------------- ----------
124 显示 1
122 删除 1
100 基础数据管理 11
110 托管业务会员单位 5
112 删除 1
114 显示 1
121 新增 1
123 修改 1
113 修改 1
120 保理业务会员单位 5
111 新增 1

已选择11行。
qingyuan18 2011-05-20
  • 打赏
  • 举报
回复
楼上的方案是可行的,Oracle的start with 和connect by 对处理父级子树很有用
nicesmil3 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cl61917380 的回复:]


SQL code

select module_id,module_name,parent_module
from MODULE
start with parent_module = 0
connect by parent_module=prior module_id
order siblings by m……
[/Quote]

用程序+代码控制。
只要改sql的父级节点id就行
加油馒头 2011-05-19
  • 打赏
  • 举报
回复
这个还是用程序处理吧

找到这个记录的所有子集
coooliang 2011-05-19
  • 打赏
  • 举报
回复
那么 我就想问你一下
你是不是想得到这个构建树呢?

如果是的话可以:


select module_id,module_name,parent_module
from MODULE
start with parent_module = 0
connect by parent_module=prior module_id
order siblings by module_id,parent_module

  • 打赏
  • 举报
回复
看不懂你想干嘛!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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