CREATE TABLE NODE(
CHILD INTEGER NOT NULL,
PARENT INTEGER NOT NULL);
INSERT INTO NODE VALUES(1, 0);
INSERT INTO NODE VALUES(2, 6);
INSERT INTO NODE VALUES(3, 1);
INSERT INTO NODE VALUES(4, 5);
INSERT INTO NODE VALUES(5, 3);
INSERT INTO NODE VALUES(6, 3);
INSERT INTO NODE VALUES(7, 5);
INSERT INTO NODE VALUES(8, 5);
WITH report(parent, child)
AS
(
SELECT parent, child
FROM node
WHERE parent = 0
UNION ALL
SELECT b.parent, b.child
FROM report a, node b
WHERE b.parent = a.child
)
SELECT * FROM report;