Djelf писал(а) 16. Мая 2017 :: 08:31:Печально что сортировка внутри не работает. Эх... сколько реализаций sql столько и разных вариантов одного ответа...
Кажется я вообще ничего не понимаю в сортировке
Выше я привел пример запроса со склеиванием строк для сортировки дерева.
http://www.1cpp.ru/forum/YaBB.pl?num=1494875208/1#1Ну вот дошло, наконец, как до жирафа, как без склейки...
Склейка все таки лишнюю память кушает, да и запрос стал на ~30% быстрее.
WITH cte(id,parentid,level,isfolder,isviewed,descr)
AS (
SELECT
s1.ID, s1.PARENTID, 1, s1.ISFOLDER,1, s1.DESCR
FROM Справочник_Номенклатура AS s1
WHERE s1.PARENTID = ' 0 '
UNION ALL
SELECT
s2.ID, s2.PARENTID, cte.LEVEL+1, s2.ISFOLDER, 0,s2.DESCR
FROM Справочник_Номенклатура AS s2
INNER JOIN cte ON cte.ID=s2.PARENTID
WHERE cte.ISFOLDER=1
ORDER BY 3 DESC,4 ASC,6 ASC -- level,isfolder,descr
)
-- INSERT INTO tree(parentid,id,level,isfolder,isviewed)
SELECT
cte.parentid [Родитель $Справочник.Номенклатура],
cte.id [Номенклатура $Справочник.Номенклатура],
cte.level,
cte.isfolder,
cte.isviewed
FROM cte
P.S. этот запрос для sqlite.