У меня есть древовидная структура, которую я хочу заказать. Вертикально и горизонтально.
Из документа SQLite я получил порядок по глубине:
WITH RECURSIVE
under_alice(name,level) AS (
VALUES('Alice',0)
UNION ALL
SELECT org.name, under_alice.level+1
FROM org JOIN under_alice ON org.boss=under_alice.name
ORDER BY 2 DESC
)
SELECT substr('..........',1,level*3) || name FROM under_alice;
Что дает:
Alice
...Bob
......Dave
......Emma
...Cindy
......Fred
......Gail
В этом запросе порядок только на уровне. Таким образом, порядок братьев и сестер (Боб и Синди, Дейв и Эмма, Фред и Гейл) не ограничен (т.е. это порядок вставки).
Но мне также нужно заказать братьев и сестер. Поэтому я думаю о столбце с одним и тем же именем с идентификатором следующего (как в связанном списке).
Таблица будет table org (name text, boss name, sibling name)
Данные:
'Alice', null, null
'Cindy', 'Alice', 'Bob'
'Bob', 'Alice', null
'Dave', 'Bob', 'Emma'
'Emma', 'Bob', null
'Gail', 'Cindy', 'Fred'
'Fred', 'Cindy', null
И тогда результат будет:
Alice
...Cindy
......Gail
......Fred
...Bob
......Dave
......Emma
Как я могу интегрировать это в рекурсивный запрос?