4

MySQLを使用して、この階層を機能させるにはどうすればよいですか?

  • 親のIDは100です。この親のParentIDは0です。
  • 子のIDは101です。ParentIDは100です。
  • サブエンティティのIDは105です。ParentIDは100です。
  • Subentityの子の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

このシナリオでは、再帰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 に答える
0

この親子関係のレベル数を管理する静的な数値はありますか?

はい:再帰的なsXLEFT JOIN回を使用します。

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 に答える