MySQL でさまざまなレベルの階層子フォルダーを再帰的に取得する方法

Barbara Streisand
リリース: 2024-11-01 17:11:30
オリジナル
527 人が閲覧しました

How to Recursively Retrieve Hierarchical Child Folders in MySQL with Varying Levels?

さまざまなレベルの階層子フォルダーを取得するための再帰的 MySQL クエリ

ネストされたフォルダーやツリー状の関係などの階層データ構造を管理する場合、すべての子供とその潜在的な子孫を見つけるのは困難な場合があります。この記事では、階層型の「Folder」テーブルを再帰的に走査することで、このニーズに効果的に対処する MySQL クエリを紹介します。

この例で使用されている「Folder」テーブルには、「idFolder」、「FolderName」、「」の 3 つの列があります。 idFolderParent'、親子関係を表します。目標は、単一のクエリで、指定された 'idFolder' のサブ子フォルダーを含むすべての子フォルダーを取得することです。

以前のソリューションが直面した課題の 1 つは、親フォルダーが特定のフォルダーに保存されていない場合の処理​​でした。データベース内の順序。これを克服するために、GROUP_CONCAT() 関数とカスタム変数に依存するクエリを提案します。

クエリ:

SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
  SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder
  WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder
  JOIN (SELECT @pv:=5) tmp
) a;
ログイン後にコピー

このクエリは次のように機能します:

  1. ターゲット フォルダーの 'idFolder' (この場合は 5) を使用してカスタム変数 @pv を初期化します。
  2. 内部クエリは、@pv を持つすべての子の 'idFolder' 値を再帰的に検索します。
  3. 結果はグループ化され、コンマで区切られて連結され、すべての子フォルダーとサブ子フォルダーの 'idFolder' 値を含む文字列が形成されます。

このアプローチにより、次のことが保証されます。階層構造内の位置に関係なく、すべての子フォルダーとサブ子フォルダーが取得され、指定された 'idFolder' 値の包括的なリストが提供されます。

以上がMySQL でさまざまなレベルの階層子フォルダーを再帰的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート