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

  • Parent 的 ID 是 100。这个 Parent 的 ParentID 是 0。
  • Child 的 ID 为 101。ParentID 为 100。
  • 子实体的 ID 为 105。ParentID 为 100。
  • 子实体的子实体 ID 为 106。其父 ID 为 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`
    

    最佳答案

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

    是: 使用递归 LEFT JOIN s 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
      ...
    

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

    10-08 13:35