`
qieyi28
  • 浏览: 157537 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

sql 避免递归的方法

 
阅读更多
今天在开发项目中发现一个很纠结的问题,按父子类修改

CREATE TABLE PRO_TYPE  (
   PRODUCTTYPEID        INTEGER                         NOT NULL,
   PRODUCTTYPENAME      VARCHAR2(50)                    NOT NULL,
   PARENTID             INTEGER                         NOT NULL,
   STATUS               VARCHAR2(1)                    DEFAULT '1',
   CREATEDATE           DATE                           DEFAULT SYSDATE
);

COMMENT ON TABLE PRO_TYPE IS
'产品类型表';

COMMENT ON COLUMN PRO_TYPE.PRODUCTTYPEID IS
'产品类型ID';

COMMENT ON COLUMN PRO_TYPE.PRODUCTTYPENAME IS
'产品类型名称';

COMMENT ON COLUMN PRO_TYPE.PARENTID IS
'父产品类型ID(0为根节点)';

COMMENT ON COLUMN PRO_TYPE.STATUS IS
'状态(0-停用,1-启用)';

COMMENT ON COLUMN PRO_TYPE.CREATEDATE IS
'创建时间';

ALTER TABLE PRO_TYPE
   ADD CONSTRAINT PK_PRO_TYPE PRIMARY KEY (PRODUCTTYPEID);


要实现的目标: 通过父ID或普通ID找出其他表的关联项
如果 
产品类型ID   产品父类ID
1               0
2               0
3               1
4               2
如果数据库中结构是这么来分父子关系,在写SQL的时候将有选了父类查不出子类对应的内容
那么怎么改呢。
这样:
产品类型ID   产品父类ID
10               0
20               0
1003             10
2004             20
200401           200401


这样在查类的时候采用  like '10%' 这样可以查出子10类及子类下的所有内容
分享到:
评论

相关推荐

    sql自定义递归方法

    在SQL中实现自定义递归方法,是一种高效处理层次结构数据的强大工具。本文将深入探讨一个具体的案例,即如何利用SQL自定义函数实现对部门层级数据的递归查询,这不仅能够帮助我们更好地理解SQL递归函数的工作原理,...

    sql递归算法并停止到具体的层数

    通过这种方式,我们可以获取到指定会员及其下级的完整列表,同时控制了查询的深度,避免无限递归。请注意,如果会员推荐关系形成了环状,不加限制的递归可能导致死循环,因此在实际应用中,通常会加上一个最大递归...

    Oracle递归SQL学习

    Oracle数据库中的递归SQL是一种强大的工具,用于处理层次结构数据,如组织结构、分类树或者层级关系等。...不过,实际应用时要注意性能优化,避免因递归深度过大而导致的问题,并考虑在模板渲染时的替代方案。

    SQL在递归查询和逻辑谓词上的扩充.pdf

    递归查询是处理层级数据或树状结构时常用的一种方法,而逻辑谓词则涉及数据库查询中的条件判断。 1. **递归查询**: - **路径考虑与不考虑**:文章讨论了两种类型的递归查询,一种是考虑路径的递归,另一种是不...

    SQL Server CTE 递归查询全解1

    总结来说,SQL Server的CTE递归查询是一种高效且灵活的方法,能够有效地处理层次结构数据。理解其工作原理和正确使用方式对于数据库开发人员来说至关重要,能帮助他们在处理树状数据结构时游刃有余。

    sqlserver 2005 使用CTE 实现递归

    使用 `UNION ALL` 而不是 `UNION` 是为了避免去除重复行,因为递归过程中可能会出现相同的行。 - 递归成员中的查询可以引用 CTE 自身,从而实现递归处理。 #### 三、实例:员工组织结构查询 假设有一个员工表 `...

    C#递归 C#递归 C#递归

    2. **递归步骤**(Recursive Step):这是一系列操作,其中最后一步是再次调用该递归方法。 #### C#中的递归 在C#中实现递归的方法与在其他语言中类似。以下是一个简单的递归方法示例,用于计算阶乘: ```csharp ...

    T-SQL中的递归.pdf

    T-SQL中的递归 T-SQL中的递归是数据库编程中一个非常重要的概念。递归是指一个存储过程或函数调用它本身,直到达到某个条件为止。递归是一种经典的编程技巧,广泛应用于数学和编程领域。 在本文中,我们将探讨T-...

    excel 递归导出 sql语句

    递归是一种解决问题的方法,它通过调用自身来解决更小的问题,直到达到基本情况。在Excel中,如果我们有一列代表父项,另一列代表子项,我们可以设计一个递归函数,从顶级父项开始,逐级找出所有的子项。 以下是...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    这种实现方法虽然比直接的递归查询语句复杂,但它避免了存储过程和函数的使用,使得整个查询过程都在SQL层面完成,更符合数据库查询的逻辑,并且可以在单条SQL语句中实现,提高了代码的简洁性和可维护性。...

    算法 回溯 动态递归 分支限界 图 etc.

    3. **递归**:递归是函数在其定义中调用自身的一种方法,通常用于处理层次结构或自我相似的问题。递归有两个主要部分:基本情况,这是可以直接解决的简单情况;以及递归步骤,即函数调用自身来处理更小规模的问题。...

    数据库设计之递归树查询

    本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...

    sql server实现递归查询的方法示例

    在SQL Server中,递归查询是一种处理层次结构数据的有效方法,尤其适用于树形结构的数据模型。递归查询允许我们从一个起始点开始,沿着层级关系遍历直到达到指定条件或者遍历完所有关联的记录。在SQL Server中,递归...

    sql server 2005中使用with实现递归的方法

    总之,`WITH` 递归CTE在SQL Server 2005中提供了一种优雅的方式来处理层次结构数据,通过这个方法,我们可以方便地查询和操作具有层级关系的数据。理解并掌握这一技术对于任何处理复杂数据结构的数据库管理员或开发...

    [sql server]SQL Server2005杂谈(2):公用表表达式(CTE)的递归调用.doc

    "SQL Server 2005 杂谈:公用表表达式(CTE)的递归调用" 本文主要介绍了 SQL Server 2005 中公用表表达式(CTE)的递归调用,用于解决树型结构数据的查询问题。CTE 是 SQL Server 2005 中的一种新的查询方式,它...

    sqlserver另类非递归的无限级分类(存储过程版)

    这种非递归的无限级分类方法在操作时需要更多的存储空间,但能有效避免递归查询带来的性能问题,特别是在需要频繁查询和更新分类关系时。同时,通过存储过程封装操作逻辑,使得添加、编辑和删除分类更加规范和安全,...

    MySQL实现递归查询的三种方式.rar

    MySQL数据库在处理涉及层次结构或递归的数据时,提供了多种方法。本压缩包中的内容主要介绍了三种实现递归查询的方法,适用于不同的需求和环境。以下是这三种方式的详细说明: ### 方式一:使用自定义函数实现 在...

    oracle SQL递归的使用详解

    因此,通常会结合`LEVEL`伪列来限制递归深度,避免无限循环。 - **性能优化**:递归查询可能消耗大量资源,尤其是在处理大量数据时。可以考虑创建索引,特别是对`CONNECT BY`中的字段,以提高查询效率。 5. **总结...

    SQL Server 公用表表达式(CTE)实现递归的方法

    在递归过程中,我们还需要注意避免无限递归的问题。在上面的代码中,通过在while循环的条件中添加了@level,限制了递归的深度,这样就可以控制递归的层数,防止因为数据结构的环状引用导致无限循环。 总的来说,SQL...

    Teradata 递归的实现

    总结起来,Teradata中的递归实现是一个强大的工具,能够帮助我们处理层次结构数据,但同时也需要谨慎使用,避免潜在的性能问题。通过理解递归查询的工作原理和优化策略,我们可以更有效地利用这一特性来解决复杂的...

Global site tag (gtag.js) - Google Analytics