相关疑难解决方法(0)

从MySQL中的分层数据生成基于深度的树(无CTE)

嗨很多天我一直在研究MySQL中的这个问题,但我无法弄明白.你们有什么建议吗?

基本上,我有一个类别表,其域名包括:id,name(类别名称)和parent(类别的父ID).

示例数据:

1  Fruit        0
2  Apple        1
3  pear         1
4  FujiApple    2
5  AusApple     2
6  SydneyAPPLE  5
....
Run Code Online (Sandbox Code Playgroud)

有许多级别,可能超过3个级别.我想创建一个sql查询,根据他的层次结构对数据进行分组:parent> child> grandchild>等.

它应该输出树结构,如下所示:

1 Fruit 0
 ^ 2 Apple 1
   ^ 4 FujiApple 2
   - 5 AusApple 2
     ^ 6 SydneyApple 5
 - 3 pear 1
Run Code Online (Sandbox Code Playgroud)

我可以使用单个SQL查询执行此操作吗?我尝试过并且确实有效的替代方案如下:

SELECT * FROM category WHERE parent=0
Run Code Online (Sandbox Code Playgroud)

在此之后,我再次遍历数据,并选择parent = id的行.这似乎是一个糟糕的解决方案.因为它是mySQL,所以不能使用CTE.

mysql common-table-expression hierarchical-data

27
推荐指数
2
解决办法
2万
查看次数

在SQL中递归选择

我有一个问题,我无法理解.我知道我想要什么,只是简直无法在屏幕上看到它.我有一个看起来像这样的表:

Id, PK UniqueIdentifier, NotNull
Name, nvarchar(255), NotNull
ParentId, UniqueIdentifier, Null
Run Code Online (Sandbox Code Playgroud)

ParentId有一个FK到Id.

我想要完成的是获得我传入的Id下方所有id的平面列表.

例:

1   TestName1    NULL
2   TestName2    1
3   TestName3    2
4   TestName4    NULL
5   TestName5    1
Run Code Online (Sandbox Code Playgroud)

树看起来像这样:

-1
  -> -2
       -> -3
  -> -5
-4
Run Code Online (Sandbox Code Playgroud)

如果我现在要求4,我只会回来4,但如果我要求1,我会得到1,2,3和5.如果我要求2,我会得到2和3,依此类推.

有谁能指出我正确的方向.我的大脑很油炸,所以我很感激能得到的所有帮助.

sql recursive-query sql-server-2008

10
推荐指数
2
解决办法
1万
查看次数

SQL递归查询

我有一个表类别,

1)Id
2)CategoryName
3)CategoryMaster

数据为:

1计算机0
2软件1
3多媒体1
4动画3
5健康0
6 Healthsub 5

我创建了递归查询:

 ;WITH CategoryTree AS
 (
  SELECT *, CAST(NULL AS VARCHAR(50)) AS ParentName, 0 AS Generation    
  FROM dbo.Category    
  WHERE CategoryName = 'Computers'

  UNION ALL        

  SELECT Cat.*,CategoryTree.CategoryName AS ParentName, Generation + 1    
  FROM dbo.Category AS Cat  INNER JOIN 
  CategoryTree ON Cat.CategoryMaster = CategoryTree.Id
 )

 SELECT * FROM CategoryTree
Run Code Online (Sandbox Code Playgroud)

我得到父类别的结果到底部,就像我得到计算机的所有子类别

但我希望从动画到计算机的自下而上的结果,请一些人建议我正确的方向.

先感谢您 :)

sql sql-server sql-server-2005 recursive-query

7
推荐指数
1
解决办法
1675
查看次数

使用递归查询构建表依赖关系图

我试图基于它们之间的外键构建表的依赖图.此图需要以任意表名作为其根开始.我可以,给定一个表名查找使用all_constraints视图引用它的表,然后查找引用它们的表,依此类推,但这将是非常低效的.我写了一个递归查询,为所有表执行此操作,但是当我添加时:

START WITH Table_Name=:tablename
Run Code Online (Sandbox Code Playgroud)

它不会返回整个树.

sql oracle recursion recursive-query

4
推荐指数
1
解决办法
1万
查看次数