Bonjour.

J'ai la table suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?