Я думаю, что вы после Oracle Иерархические запросы
WITH posts AS (
SELECT 'A' AS post_id, null as parent_post_id FROM DUAL
UNION
SELECT 'B' AS post_id, 'A' as parent_post_id FROM DUAL
UNION
SELECT 'C' AS post_id, 'B' as parent_post_id FROM DUAL
UNION
SELECT 'D' AS post_id, 'C' as parent_post_id FROM DUAL
)
SELECT post_id, level AS chain_length
FROM posts
START WITH parent_post_id IS NULL
CONNECT BY PRIOR post_id = parent_post_id;
Вы можете сделать дерево более сложным, например, добавив B2
ответ к сообщению A
, чтобы увидеть большее разнообразие представления данных, как вы могли бы видеть в реальном мире.
В моем примере я сделал отправную точку A
, тогда как у вас это было D
, не стесняйтесь изменять по своему усмотрению. Я также начал с 1, вы можете сделать это level - 1
, если хотите иметь индекс на основе нуля.