Maison >base de données >tutoriel mysql >Comment effectuer des requêtes récursives dans SQLite3 pour rechercher toutes les sous-parties d'une SuperPart donnée ?

Comment effectuer des requêtes récursives dans SQLite3 pour rechercher toutes les sous-parties d'une SuperPart donnée ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-31 20:56:12437parcourir

How to Perform Recursive Queries in SQLite3 to Find All Subparts of a Given SuperPart?

Requêtes récursives dans SQLite3

Question :

Dans SQLite3, comment pouvez-vous effectuer une requête récursive pour trouver toutes les paires d'un SuperPart donné avec son sous-parties ?

Réponse :

Dans les versions SQLite 3.8.3 et supérieures, les requêtes récursives sont prises en charge à l'aide d'expressions de table communes (CTE) avec la syntaxe WITH :

WITH RECURSIVE Subparts AS (
  SELECT Part, SuperPart FROM Part
  UNION ALL
  SELECT p.Part, p.SuperPart FROM Part p JOIN Subparts s ON p.SuperPart = s.Part
)
SELECT * FROM Subparts;

Pour les versions antérieures à 3.8.3, SQLite ne prenait pas en charge les CTE, y compris les récursifs CTE. Par conséquent, la récursivité doit être implémentée manuellement dans le code client, comme suit :

  1. Récupérer la ligne initiale et les ID de sous-partie.
  2. Récupérer les lignes et les ID de sous-partie pour les sous-parties.
  3. Répétez les étapes 1 et 2 jusqu'à ce qu'aucune ligne ne soit renvoyée.

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!

Déclaration:
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