Иерархический запрос DB2 - PullRequest
1 голос
/ 03 мая 2020

Невозможно выполнить запрос в IBM DB2 на облаке. Сначала я попробовал SYS_CONNECT_BY_PATH, но он вернул неожиданный токен "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, который работал хорошо, но не сейчас, он говорит Неправильное использование строкового столбца, переменной хоста, константы или функции "MNAME"

WITH paths (id, path) AS (SELECT id0, Mname FROM main WHERE main_id IS NULL 
UNION SELECT id0, path || '/' || Mname  FROM main inner join paths on main_id = id) 
SELECT id, path FROM paths where id in (40,60);

Что здесь не так?

1 Ответ

1 голос
/ 03 мая 2020

Думаю, я сделал это, по крайней мере, я надеюсь, что это правильно

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...