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...
ce pdf reprend les points à gérer lorsque des données sont corrompu avec PostgreSQL.
et ça donne pas envie...
copie de sauvegarde : http://shaarli.memiks.fr/files/worst-day-fosdem-2014.pdf