ホームページ >データベース >mysql チュートリアル >単一の SQL クエリでネストされたカテゴリを再帰的にフェッチするにはどうすればよいですか?

単一の SQL クエリでネストされたカテゴリを再帰的にフェッチするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-07 11:56:02831ブラウズ

How to Fetch Nested Categories Recursively with a Single SQL Query?

単一クエリによるネストされたカテゴリの取得

記事が階層セクションに編成されている Web サイトでは、これらのセクションを効率的に取得することが重要です。この質問では、PHP と MySQL を使用して単一の SQL クエリでカテゴリを再帰的にフェッチする方法について説明します。

PHP で再帰的なツリー構造を構築するには、次のアプローチが提案されています。

  • ノード参照の配列を作成します:

    • ID、名前、親 ID を含むすべてのカテゴリについてデータベースをクエリします。
    • 連想配列を作成しますここで、各ノードはカテゴリを表し、その子は空の配列で表されます。
  • ツリー構造を作成します:

    • ノード配列を繰り返します。
    • 各ノードについて、その親 ID がノード リストに存在するかどうかを確認します。

      • 親が存在する場合は、現在のノードを次のように追加します。子をその親の子リストに追加します。
      • それ以外の場合は、現在のノードをツリーの最上位ノードとして追加します。
  • 一時配列の削除:

    • ツリー構造が完了したら、ノード リストを削除し、参照の設定を解除します。

このアプローチにより、純粋な PHP で階層ツリーを構築でき、MySQL での反復クエリと比較して、より高速かつ効率的なデータ取得が可能になります。最終的なツリー構造は、各カテゴリとその子が表現された状態で $tree 配列に保存されます。

以上が単一の SQL クエリでネストされたカテゴリを再帰的にフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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