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 ?
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;
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 :
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!