4

使用 MySQL 如何使这种层次结构起作用?

  • Parent 的 ID 为 100。此 Parent 的 ParentID 为 0。
  • Child 的 ID 为 101。ParentID 为 100。
  • SubEntity 的 ID 为 105。ParentID 为 100。
  • 子实体的子实体的 ID 为 106。它们的 ParentID 为 105。

此查询将插入 iReport。目前,子实体及其子实体不会卷入父实体。

这就是我最终的结果:

`Select
case
when FC.ParentType = 'PARENT' then FC.FundCode
when FB.ParentType = 'PARENT' then FB.FundCode
when F.ParentType = 'PARENT' then F.FundCode
else 0 end as `ParentID`,
case
when FB.ParentType = 'SUBFUND' then FB.FundCode
when F.ParentType = 'SUBFUND' then F.FundCode
else 0 end as `SubfundID`,
case
when FB.ParentType = 'CHILD' then FB.FundCode
when F.ParentType = 'CHILD' then F.FundCode
else 0 end as `Children`,            
F.FundName     
From Fund F
join Fund FB on F.ParentId = FB.FundCode
join Fund FC on FB.ParentID = FC.FundCode`
4

2 回答 2

0

是否有一个静态数字来控制这种父子关系有多少级别?

是:使用递归LEFT JOINs X 次。

SELECT *
FROM table t1 LEFT JOIN table t2
  ON t1.id = t2.parent_id
  LEFT JOIN table t3
  ON t2.id = t3.parent_id
  ...

否:使用单独的查询来完成此操作,直到您根据需要充实您的父/子对象。确保您有适当的检查以避免循环,即。孩子是其父母的父母。

于 2012-10-25T16:34:59.043 回答
0

对于这种情况,您可以使用递归 CTE 。看看这个链接,它给出了一个很好的例子。

http://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/

于 2012-10-25T16:42:10.157 回答