我有一张桌子:
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而不是cellname。如何获取父母的姓名而不是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
答案 0 :(得分: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;