create table predmety_pre( id int, meno varchar(10), vyplyva int ) insert into predmety_pre values (1, 'swi1', 2), (2, 'swi2', NULL), (3, 'PAZ1', 4), (4, 'PAZ2', 5), (5, 'PAZ3', 6), (6, 'BIP', NULL), (3, 'PAZ1', 1), (3, 'PAZ1', 7), (7, 'OSY', 8), (8, 'PSE', 6), (7, 'OSY', 6), (5, 'PAZ3', 6), (9, 'DBS1', 10), (10, 'DBS2', 6) WITH genCesta (id, cesta) AS ( SELECT id, CAST( '' AS VARCHAR(90) ) FROM predmety_pre WHERE vyplyva IS NULL UNION ALL SELECT o1.id, CAST( g.cesta + o2.meno + ' \ ' AS VARCHAR(90) ) FROM predmety_pre o1, predmety_pre o2, genCesta g WHERE g.id = o1.vyplyva AND g.id = o2.id ) SELECT o.id, c.cesta + o.meno uplnaCesta FROM predmety_pre o, genCesta c WHERE o.id = c.id ORDER BY 1