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
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).idobject | project_path ----------+------------------------- 7546762 | prj1 7546770 | prj1 / prj1.1 7546772 | prj1 / prj1.2 7546766 | prj2
Est-ce possible ?







Répondre avec citation
Partager