Не то нажал... :(((

CREATE TABLE C (
    ID    integer,
    NAME  VARCHAR(100)
);


CREATE TABLE T (
    ID         integer,
    OWNERCODE  integer,
    CODE       integer
);

with recursive X (ID, OWNERCODE, CODE, OWNCLASS, CLASS) as
 (select T.ID, OWNERCODE, CODE,  C2.name as OWNCLASS, C1.NAME as CLASS from
T
    inner join C C1 on C1.ID = CODE
    left join C C2 on C2.ID = OWNERCODE
    where ownercode=0
  union all
  select T.ID, OWNERCODE, CODE, C2.name as OWNCLASS, C1.NAME as CLASS from T
    inner join C C1 on C1.ID = CODE
    left join C C2 on C2.ID = OWNERCODE
    inner join X on T.OWNERCODE = X.CODE)
 select * from X


Ответить