2012-05-23 2 views
0

У меня есть таблица:Postgres - с рекурсивным - получить родитель имя столбца

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 

У меня есть запрос, который дает родительский идентификатор вместо CellName. Как получить имя родителя вместо идентификатора.

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 

ответ

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; 
Смежные вопросы