Maison > base de données > tutoriel mysql > Comment puis-je effectuer des requêtes récursives dans SQLite3 pour récupérer des données hiérarchiques ?

Comment puis-je effectuer des requêtes récursives dans SQLite3 pour récupérer des données hiérarchiques ?

Linda Hamilton
Libérer: 2024-12-30 13:32:21
original
378 Les gens l'ont consulté

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

Requêtes récursives dans SQLite3

Dans SQLite3, il est possible d'exécuter des requêtes récursives pour récupérer des données hiérarchiques d'une table contenant un parent-enfant relations, comme trouver toutes les sous-parties d’une superpartie donnée. Pour y parvenir, vous pouvez utiliser la syntaxe WITH RECURSIVE, qui est prise en charge dans les versions 3.8.3 et supérieures de SQLite3.

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;
Copier après la connexion

L'instruction WITH RECURSIVE crée une table temporaire appelée SubParts qui contient la ligne d'origine et un colonne nommée Level, qui s'initialise à 1 pour la ligne parent. La clause UNION ALL effectue l'étape récursive en sélectionnant les lignes qui correspondent aux sous-parties de la ligne actuelle et en incrémentant le niveau de 1. La requête renvoie ensuite toutes les lignes de la table SubParts.

Avant SQLite3 3.8.3

Avant SQLite3 version 3.8.3, les requêtes récursives n'étaient pas prises en charge. Pour émuler la récursivité dans le code client pour une hiérarchie à plusieurs niveaux, suivez ces étapes :

  1. Récupérez la ligne initiale et ses sous-parties.
  2. Récupérez de manière itérative les lignes et leurs sous-parties jusqu'à ce qu'aucune ligne ne soit retourné.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal