ホームページ >データベース >mysql チュートリアル >単一のクエリで MySQL の特定のディレクトリのすべてのサブディレクトリを取得するにはどうすればよいですか?

単一のクエリで MySQL の特定のディレクトリのすべてのサブディレクトリを取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 13:53:44836ブラウズ

How to Retrieve All Subdirectories of a Specific Directory in MySQL with a Single Query?

MySQL 再帰を使用した単一クエリでのサブディレクトリの取得

ディレクトリ構造に似たテーブルを考えてみましょう。

folders_table
-----------------------
- INT id_folder
- INT id_folder_parent
- VARCHAR folder_name

課題は、単一のメソッドを使用して特定のディレクトリのすべてのサブディレクトリを取得することにあります。 SELECT クエリ。

解決策:

従来のデータベース構造では、このクエリを効率的にサポートできません。これを有効にするには、データベース構造を変更する必要があります。具体的には、階層を表すために自己参照関係が導入されています。

ステップバイステップの説明:

  1. 新しい列 left_index を追加して、項目の順序を追跡します。
  2. 全体の項目の順序を追跡するために、新しい列 right_index を追加します。
  3. 次の列を含む新しいテーブルを作成します: id_folder、id_folder_parent、left_index、right_index、folder_name。

変更が完了したら、次のクエリを使用して、 1 つのクエリ内の任意の深さのツリー:

SELECT *
FROM folders_table
WHERE left_index > (SELECT left_index FROM folders_table WHERE id_folder = <parent_folder_id>)
AND right_index < (SELECT right_index FROM folders_table WHERE id_folder = <parent_folder_id>)
ORDER BY left_index

リソースさらに詳しい説明:

  • [データベースへの階層データの保存 (SitePoint)](https://www.sitepoint.com/hierarchical-data-database/)
  • [階層データの管理MySQL](https://www.qrypt.co.uk/blog/managing-hierarchical-data-in-mysql)

以上が単一のクエリで MySQL の特定のディレクトリのすべてのサブディレクトリを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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