Иерархический путь DB2
Не получается создать запрос в ibm db2 on cloud. Пробовал сначала с помощью SYS_CONNECT_BY_PATH, но говорит мол An unexpected token "PRIOR"
SELECT ID0, MNAME, SYS_CONNECT_BY_PATH(MNAME, '/') AS path
FROM MAIN WHERE id0 IN (40,60) CONNECT BY NOCYCLE PRIOR id0=main_id;
Попробовал сделать так, как делал раньше в SQLite и все работало, но и тут ошибка Improper use of a string column, host variable, constant, or function "MNAME"
WITH paths (id, path) AS (SELECT id0, Mname FROM main WHERE main_id IS NULL
UNION SELECT main.id0, paths.path ||'/'|| main.Mname FROM main inner join paths on main.main_id = paths.id)
SELECT a.id0, path FROM main AS a INNER JOIN paths AS b ON a.id0 = b.id where a.id0 in (40,60);
Помогите, как быть?
Ответы (1 шт):
Автор решения: Daniel Dashkevich
→ Ссылка
Вроде как разобрался
WITH paths (id, path, counter) AS
( SELECT id0, Mname, 1
FROM main
WHERE main_id IS NULL
UNION all
SELECT id0, path || '/' || Mname, counter + 1
FROM main, paths
WHERE main_id = id and counter <=100
)
SELECT id, path
FROM paths
ORDER BY id