ホームページ >データベース >mysql チュートリアル >SQLite3 で再帰クエリを実行して階層データを取得するにはどうすればよいですか?

SQLite3 で再帰クエリを実行して階層データを取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-30 13:32:21380ブラウズ

How Can I Perform Recursive Queries in SQLite3 to Retrieve Hierarchical Data?

SQLite3 の再帰クエリ

SQLite3 では、親子を含むテーブルから階層データを取得する再帰クエリを実行できます。特定のスーパーパートのすべてのサブパートを検索するなどの関係。これを実現するには、SQLite3 バージョン 3.8.3 以降でサポートされている WITH RECURSIVE 構文を使用できます。

WITH RECURSIVE SubParts AS (
  SELECT Part, SuperPart, 1 AS Level
  FROM Part
  WHERE SuperPart = 'eZ00'
  UNION ALL
  SELECT p.Part, p.SuperPart, s.Level + 1
  FROM Part AS p
  JOIN SubParts AS s ON p.SuperPart = s.Part
)
SELECT * FROM SubParts;

WITH RECURSIVE ステートメントは、元の行とLevel という名前の列。親行の 1 に初期化されます。 UNION ALL 句は、現在の行のサブパートに一致する行を選択し、レベルを 1 ずつ増やすことによって再帰的なステップを実行します。その後、クエリは SubParts テーブルからすべての行を返します。

SQLite3 より前3.8.3

SQLite3 バージョン 3.8.3 より前、再帰的クエリはサポートされていませんでした。マルチレベル階層のクライアント コードで再帰をエミュレートするには、次の手順に従います。

  1. 最初の行とそのサブパートを取得します。
  2. 行がなくなるまで行とそのサブパートを繰り返し取得します。返されました。

以上がSQLite3 で再帰クエリを実行して階層データを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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