さまざまなレベルの階層子フォルダーを取得するための再帰的 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;
このクエリは次のように機能します:
このアプローチにより、次のことが保証されます。階層構造内の位置に関係なく、すべての子フォルダーとサブ子フォルダーが取得され、指定された 'idFolder' 値の包括的なリストが提供されます。
以上がMySQL でさまざまなレベルの階層子フォルダーを再帰的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。