0 0

oracle 查询问题5

现在有一个表结构如下:
idnamenumparentid
1A20
2B51
3C42
4D53
5E51
6F51

现在我只想查parentid是1的记录,但是B下面的记录的num我是需要都加在B上面的,比如我查询出来B的num应该是5+4+5=14,请问该怎样做,感谢各位,没分了,谢谢了!

问题补充:
hudingchen 写道
WITH t AS (
    SELECT '1' tid,'A' tname,2 num,'0' parentid FROM DUAL UNION ALL
    SELECT '2' tid,'B' tname,5 num,'1' parentid FROM DUAL UNION ALL
    SELECT '3' tid,'C' tname,4 num,'2' parentid FROM DUAL UNION ALL
    SELECT '4' tid,'D' tname,5 num,'3' parentid FROM DUAL UNION ALL
    SELECT '5' tid,'E' tname,5 num,'1' parentid FROM DUAL UNION ALL
    SELECT '6' tid,'F' tname,5 num,'1' parentid FROM DUAL
)
SELECT m.root,
       SUM(m.num) num
  FROM (SELECT t.*,
               CONNECT_BY_ROOT(t.tid) root
          FROM t
         START WITH t.parentid = '1'
        CONNECT BY PRIOR t.tid = t.parentid) m
 GROUP BY m.root
 ORDER BY m.root

ROOT        NUM
---- ----------
2            14
5             5
6             5

非常感谢,我执行的时候 为什么提示with那里有错呢,?

问题补充:
hudingchen 写道
WITH t AS (
    SELECT '1' tid,'A' tname,2 num,'0' parentid FROM DUAL UNION ALL
    SELECT '2' tid,'B' tname,5 num,'1' parentid FROM DUAL UNION ALL
    SELECT '3' tid,'C' tname,4 num,'2' parentid FROM DUAL UNION ALL
    SELECT '4' tid,'D' tname,5 num,'3' parentid FROM DUAL UNION ALL
    SELECT '5' tid,'E' tname,5 num,'1' parentid FROM DUAL UNION ALL
    SELECT '6' tid,'F' tname,5 num,'1' parentid FROM DUAL
)
SELECT m.root,
       SUM(m.num) num
  FROM (SELECT t.*,
               CONNECT_BY_ROOT(t.tid) root
          FROM t
         START WITH t.parentid = '1'
        CONNECT BY PRIOR t.tid = t.parentid) m
 GROUP BY m.root
 ORDER BY m.root

ROOT        NUM
---- ----------
2            14
5             5
6             5

不好意思,是我的问题,是我上一个sql的问题,非常感谢您的回答,学习了!谢谢!
2012年1月04日 11:54

3个答案 按时间排序 按投票排序

0 0

采纳的答案

WITH t AS (
    SELECT '1' tid,'A' tname,2 num,'0' parentid FROM DUAL UNION ALL
    SELECT '2' tid,'B' tname,5 num,'1' parentid FROM DUAL UNION ALL
    SELECT '3' tid,'C' tname,4 num,'2' parentid FROM DUAL UNION ALL
    SELECT '4' tid,'D' tname,5 num,'3' parentid FROM DUAL UNION ALL
    SELECT '5' tid,'E' tname,5 num,'1' parentid FROM DUAL UNION ALL
    SELECT '6' tid,'F' tname,5 num,'1' parentid FROM DUAL
)
SELECT m.root,
       SUM(m.num) num
  FROM (SELECT t.*,
               CONNECT_BY_ROOT(t.tid) root
          FROM t
         START WITH t.parentid = '1'
        CONNECT BY PRIOR t.tid = t.parentid) m
 GROUP BY m.root
 ORDER BY m.root

ROOT        NUM
---- ----------
2            14
5             5
6             5

2012年1月04日 12:27
0 0

3
select  sum(num) from tblTest t start with parentid=1 connect by prior id=parentid and level <2 
统计所有id=1的直接子节点,不包括id=1的节点,通过 level<2 控制 

2012年1月04日 12:44
0 0

你的描述不是很清晰,不过我应该理解你的意思了,你想根据树节点的id统计下面所有子节点的num的和,下面的语句应该可以满足你的需求:
1
select sum(num)   from tblTest t start with parentid=1 connect by prior id=parentid

上面的语句是统计所有id=1的子树的num之和,不包括id=1的节点,

2
select sum(num) from tblTest t start with id=1 connect by prior id=parentid

同1,不过包括id=1的节点

3

select  sum(num) from tblTest t start with parentid=1 connect by prior id=parentid and level <2
统计所有id=1的直接子节点,不包括id=1的节点,通过 level<2 控制

2012年1月04日 12:40

相关推荐

    oracle SQL查询工具

    oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具oracle SQL查询工具...

    Oracle查询优化改写技巧与案例

    《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

    oracle查询用户信息

    oracle查询用户信息1.查看所有用户2.查看用户或角色系统权限3.查看角色4.查看用户对象权限5.查看所有角色

    oracle查询优化pdf

    Oracle查询优化是数据库管理中的关键环节,它涉及到提高数据检索速度、降低系统资源消耗和提升整体应用性能。这本书“Oracle查询优化PDF”很可能是对Oracle数据库查询优化技术的深入探讨,涵盖了一系列相关主题,...

    提高Oracle查询效率

    本文将重点讨论如何提高Oracle查询效率,主要基于提供的压缩包文件"ORACLE_SQL性能优化.ppt"中的内容,结合源码理解和工具应用。 1. **SQL优化基础** - **索引优化**:索引可以显著提升数据检索速度。正确选择索引...

    Oracle查询优化改写技巧与案例2.zip

    《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

    【oracle】oracle查询优化改写

    在"Oracle_chaxunyouhuagaixiejiqiaoyuanli_20180929.pdf"这份文档中,可能会详细讲解以上提到的概念,并提供实际案例和技巧,帮助你深入理解和应用Oracle查询优化改写。通过学习这些内容,你将能够更好地诊断和解决...

    oracle 查询部分ppt

    通过灵活运用联接,可以处理复杂的多表查询问题。 此外,子查询(Subquery)也是Oracle查询中的重要部分。子查询可以在SELECT、FROM或WHERE子句中嵌套,用于获取满足特定条件的子集。例如,在WHERE子句中使用子查询...

    Oracle查询优化改写 技巧与案例.pdf

    Oracle查询优化改写 技巧与案例.pdf

    通用查询分析器(Oracle数据查询)

    "通用查询分析器"就是为此目的设计的一款工具,它能够帮助用户更方便、直观地执行Oracle数据库的SQL查询操作。 通用查询分析器通常具备以下特性: 1. **图形化界面**:与命令行界面相比,通用查询分析器提供了一个...

    oracle查询一个月之内数据

    根据提供的标题、描述、标签及部分内容,我们可以了解到本篇文章主要关注的是如何在Oracle数据库中查询一个月内的数据。这里的关键在于日期范围的确定以及如何利用Oracle的内置函数来完成这一任务。接下来,我们将...

    oracle查询死锁语句

    oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!

    oracle-死锁查询

    oracle死锁问题查询代码,仅供参考,有问题大家一起交流

    Oracle查询语句大全-精华版

    Oracle 查询语句大全-精华版 Oracle 查询语句大全是 Oracle 数据库管理系统中最基本也是最重要的组成部分,用于管理和维护数据库。本文将详细介绍 Oracle 查询语句的使用方法和实践操作。 一、创建用户和授权 在 ...

    sql查询oracle时间段操作

    在SQL查询中对Oracle数据库进行时间段操作是一项关键技能,特别是在数据恢复和历史数据分析时。Oracle数据库提供了多种方式来处理时间范围的数据,包括SQL查询、闪回功能和快照。下面我们将详细探讨这些知识点。 ...

    解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    "解决mybatis使用char类型字段查询oracle数据库时结果返回null问题" 在使用mybatis框架对Oracle数据库进行查询操作时,如果使用char类型字段作为查询条件,可能会出现结果返回null的问题。这种情况下,需要对char...

    Oracle 多表查询优化

    Oracle 多表查询优化 Oracle 多表查询优化是指在 Oracle 数据库管理系统中,为了提高多表查询的效率和性能采取的一些优化策略和技术。在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量...

    Java使用Jdbc连接Oracle执行简单查询操作示例

    Java使用Jdbc连接Oracle执行简单查询操作示例 Java使用Jdbc连接Oracle执行简单查询操作,是指使用Java语言通过Jdbc(Java Database Connectivity)连接Oracle数据库并执行简单查询操作的过程。本文将通过实例形式...

    Oracle查询取汉字拼音首字母

    Oracle查询取汉字拼音首字母Function

Global site tag (gtag.js) - Google Analytics