Я знаю, что это было задано в журнале время назад, но с текущей версией SQLite это тривиально и не требует глубины уровня, как говорит @ Bill-Karwin Поэтому правильный ответ следует пересмотреть:)
В моей таблице есть столбцы MCTMPLID и REF_TMPLID, а начальный узел моей структуры называется ROOT
CREATE TABLE MyStruct (
`TMPLID` text,
`REF_TMPLID` text
);
INSERT INTO MyStruct
(`TMPLID`, `REF_TMPLID`)
VALUES
('Root', NULL),
('Item1', "Root"),
('Item2', "Root"),
('Item3', 'Item1'),
('Item4', 'Item1'),
('Item5', 'Item2'),
('Item6', 'Item5');
А вот основной запрос, который строит древовидную структуру
WITH RECURSIVE
under_root(name,level) AS (
VALUES('Root',0)
UNION ALL
SELECT tmpl.TMPLID, under_root.level+1
FROM MyStruct as tmpl JOIN under_root ON tmpl.REF_TMPLID=under_root.name
ORDER BY 2 DESC
)
SELECT substr('....................',1,level*3) || name as TreeStructure FROM under_root
А вот и результат
Root
...Item1
......Item3
......Item4
...Item2
......Item5
.........Item6
Я уверен, что это можно изменить, чтобы работать со структурой таблицы tik OP, так что пусть этот пример будет отправной точкой
Документация и некоторые образцы https://www.sqlite.org/lang_with.html#rcex1