0

私はテーブルを持っています:

CREATE TABLE cell
(
  cellpk serial NOT NULL,
  cellname character varying NOT NULL,  
  parent integer NOT NULL,
  CONSTRAINT cellpk PRIMARY KEY (cellpk)
)
cellA-> subcellA1-> subsubcellA1
      |-> subcellA2-> subsubcellA2   

セルとその親の名前を同じ行に入れたい。

何かのようなもの-

subcellA1-cellA
subcellA2-cellA
subsubcellA1- subcellA1
subsubcellA2- subcellA2

セル名の代わりに親IDを指定するクエリがあります。IDの代わりに親の名前を取得するにはどうすればよいですか。

WITH RECURSIVE cell_child as
(
SELECT fp.* FROM cell as fp WHERE fp.parent = '111'
 UNION ALL
 SELECT f.*
   FROM
     cell as f
 JOIN cell_child as fc
 ON (f.parent = fc.cellpk)     
 )     
 select * from cell_child as cc
4

1 に答える 1

0

元のテーブルに参加してみてください。

WITH RECURSIVE cell_child AS (
  SELECT fp.* FROM cell as fp WHERE fp.parent = '111'
  UNION ALL
  SELECT f.* FROM cell AS f
    JOIN cell_child as fc ON f.parent = fc.cellpk
 )     
 SELECT cc.*, parent.cellname
   FROM cell_child AS cc
   LEFT JOIN cell AS parent ON parent.cellpk = cc.parent;
于 2012-05-23T19:02:21.787 に答える