Requête récursive pour obtenir le chemin à partir d'une arborescence
Bonjour.
J'ai la table suivante:
Code:
1 2 3 4 5 6 7
| CREATE TABLE "project" (
"idobject" serial,
"idparent" integer,
"project_name" text,
PRIMARY key (idobject),
FOREIGN key (idparent) REFERENCES project (idobject)
) INHERITS (object); |
Je cherche à obtenir le chemin des arborescences de projet.
Actuellement je fais ça :
Code:
1 2 3 4 5 6 7
| SELECT n1.idobject,
CASE WHEN n3.project_name IS NULL THEN '' ELSE n3.project_name || ' / ' END
|| CASE WHEN n2.project_name IS NULL THEN '' ELSE n2.project_name || ' / ' END
|| n1.project_name AS project_path FROM project AS n1
LEFT OUTER JOIN project AS n2 ON n1.idparent = n2.idobject
LEFT OUTER JOIN project AS n3 ON n2.idparent = n3.idobject
ORDER BY project_path; |
et j'obtiens
idobject | project_path
----------+-------------------------
7546762 | prj1
7546770 | prj1 / prj1.1
7546772 | prj1 / prj1.2
7546766 | prj2
Ce qui est exactement ce que je veux, sauf que j'aurais voulu faire ça avec une requête récursive afin que cela fonctionne quel que soit le nombre de niveaux (ce qui n'est pas le cas ici).
Est-ce possible ?