Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.06.2019, 09:50
Новичок на форуме
Отправить личное сообщение для sanderlake Посмотреть профиль Найти все сообщения от sanderlake
 
Регистрация: 22.02.2011
Сообщений: 4

А как лучше создать древовидный каталог?
Доброе утро.

Знаю что если хранить каталог по простому через parentId то выбрать только рекурсией получится, что не подходит.
Делитесь что сами используете, нужно чтобы можно было добавлять новое в нужное место, редактировать, т.е. переносить существующее.

Фреймворк думаю выбор падет на yii
Ответить с цитированием
  #2 (permalink)  
Старый 29.06.2019, 10:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

http://www.getinfo.ru/article610.html

Сообщение от sanderlake
если хранить каталог по простому через parentId то выбрать только рекурсией получится
Не обязательно рекурсия.
Ответить с цитированием
  #3 (permalink)  
Старый 30.06.2019, 15:04
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

На материализованных путях полно способов как, в т.ч. без рекурсии

Последний раз редактировалось micscr, 26.02.2020 в 15:54. Причина: битая ссылка
Ответить с цитированием
  #4 (permalink)  
Старый 01.07.2019, 17:46
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

laimas,
правильно указал на NESTED SETS
но чем вам рекурсия не нравится. Она поддерживается наверное всеми современными базами данных и работает отлично
Ответить с цитированием
  #5 (permalink)  
Старый 01.07.2019, 19:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Poznakomlus,
можно получить все, а уже результат рекурсивным обходом.
А можно вообще без рекурсии получить все дерево, как:

SELECT ... FROM t root
LEFT JION t sub1
ON root.id = sub1.parent
LEFT JION t sub2
ON sub1.id = sub2.parent
....
LEFT JION t subN
ON subM.id = subN.parent
WHERE root.parent = 0
ORDER BY id


если глубина вложения дерева ограничена.

Последний раз редактировалось laimas, 01.07.2019 в 19:39.
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2019, 00:04
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

я бы предложил написать хранимые процедуры под данные задачи и этим пользоваться
в деревьях не самая трудная задача выборка ветви
куда более сложная вставка, перенос
надеяться на фреймворк который решит задачу не стоит,
фреймворк служит для быстрой разработки
как только вы столкнетесь с проблемами вам придется переписывать узкие места.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как создать многомерный пустой или как не создавать. PashPP Общие вопросы Javascript 6 02.08.2012 21:49
Как получить URL, в случае совпадения с условиями - создать div? Intruder Общие вопросы Javascript 3 27.05.2012 02:10
как создать елемент с вложеными елементами scuter Events/DOM/Window 11 14.05.2008 16:15