ホームページ >データベース >mysql チュートリアル >MySQL 階層データからツリー構造を再帰的に構築する方法

MySQL 階層データからツリー構造を再帰的に構築する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-08 15:57:09247ブラウズ

How to Recursively Build a Tree Structure from MySQL Hierarchical Data?

MySQL 行を再帰的に取得してツリーを構築する方法

問題:

部品表テーブルを作成するには、行を再帰的に取得するメソッドが必要です。ネストされたツリー表現。ただし、従来の SQL クエリは再帰を処理する能力に制限があります。

回答:

2011 年に、ツリー用の MySQL ソリューションを求める質問が DBA StackExchange に投稿されました。横断。応答では一連のストアド プロシージャが提供されました。

  • GetParentIDByID: 指定された ID の親 ID を取得します。
  • GetAncestry: 戻り値その中の先祖全員が
  • GetFamilyTree: 指定されたアイテムの家系図全体を生成します。

実装:

呼び出しGetFamilyTree(item_id) は、特定のアイテムの家系図を取得します。このストアド プロシージャは、親とすべての祖先を再帰的に検索し、結果を階層化されたツリー構造として返します。

例:

CREATE PROCEDURE GetFamilyTree(
   IN item_id INT
)
BEGIN

   SELECT ... # Perform recursive tree traversal

END;

使用法:

CALL GetFamilyTree(1);

これにより、アイテム 1 の家系図全体が取得され、それが表示されます。ネストされた形式。

利点:

  • 非効率的なバッチ処理を必要とせずに、階層型データの取得を効率的に処理します。
  • カスタマイズ可能な方法を提供します。開始点を指定してツリーを走査するには
  • データベースの関係に基づいて、複雑で動的なツリー構造を生成できます。

以上がMySQL 階層データからツリー構造を再帰的に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。