PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

Recursive Postgres Queries - Timothy's Blog

jeudi 20 août 2015 à 09:44
Les Liens de Memiks
Comment lancer des requêtes réursives en postgre SQL ?

-- l'utilisation du WITH RECURSIVE permet d'appeler les enfants en entrée et d'obtenir les petits enfants etc...
WITH RECURSIVE product_type_elements AS (
 -- requete non recursive, on commence par récupérer les élements de départ
 (
   (
     select * from product_type where id=249
   )
 )
 UNION
 -- puis on utilise les éléments trouvés pour récupérer les enfants
 SELECT pt.*
   -- on utilise ici product_type_elements définit comme récursif (on l'appel lui même donc).
 FROM product_type_elements pte, product_type pt
 WHERE pt.parent_id = pte.id
)

-- la on récupére tout les product_type_elements
SELECT * from product_type_elements;

-- 0) on lance le select sur product_type_elements
-- 1) au départ, pas de pte trouvé donc on lance le select * from product_type where id=249
-- 2) puis sur la liste des pte trouvés on lance le second select qui lui sera récursif.
-- 3) on recommence le point 2 sur les lignes trouvées etc...


je trouve cela plus simple qu'avec ORACLE...
(Permalink)