|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|||||||||||
MySQL Выборка из таблицы с сортировкой по иерархии04.11.2016, 19:04. Показов 2237. Ответов 14
Метки нет (Все метки)
Здравствуйте!
Имеется таблица в бд с полями id, parent_id, name. Parent_id может быть либо NULL, либо являться ссылкой на строку этой же таблицы. Допустим, таблица в бд содержит следующие данные:
Так как не очень хочется использовать в цикле множество запросов, постепенно углубляясь вглубь иерархии. К тому же в этом случае придется еще пользоваться сортировкой и обрезанием на php. А это слишком замедлит систему.
0
|
|||||||||||
| 04.11.2016, 19:04 | |
|
Ответы с готовыми решениями:
14
Выборка с сортировкой Выборка одновременно из нескольких таблиц с сортировкой Выборка из иерархии |
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
|
| 04.11.2016, 19:49 | |
|
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 04.11.2016, 19:51 | |
|
Надо использовать Nested Sets
1
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 05.11.2016, 12:40 [ТС] | |
|
Спасибо!
Но что-то я туплю... не могу понять как это использовать? Точнее застрял в самом начале... что означают значения полей left и right? В описании об этом толком ничего не написано.
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 05.11.2016, 13:36 | ||
|
1
|
||
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 05.11.2016, 17:58 [ТС] | |
|
Jewbacabra, спасибо! С этим я разобрался. С добавлением и удалением. Но не с выводом. Как вывести в документ иерархически? У меня выводится отсортированным по id... что в принципе логично
На скрине tree изображено дерево, которое я хочу вывести. На двух других скринах, то как оно хранится в базе и то, как оно выводится запросом. Как их отсортировать иерархически? Какой запрос использовать?
0
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 05.11.2016, 18:07 [ТС] | |
|
К слову. Мое дерево может состоять из нескольких сотен элементов. До тысячи в худшем случае. Но далее изменения в нем будут проводится крайне редко.
Дерево мне нужно вывести списком отсортированным по иерархии. Причем нужно использовать постраницную навигацию, выводить не более 50 строк на страницу. Поэтому хочется извлекать данные уже отсортированными одним запросом и использовать LIMIТ 50 для извлечения ограниченного кол-ва строк. Если же придется использовать несколько запросов, то LIMIT 50 уже не поможет
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 05.11.2016, 18:12 | |
|
1
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
||||||
| 05.11.2016, 18:43 [ТС] | ||||||
|
Круто! о_О
Пока что магия какая-то... Сложно осознать как это работает. Добавлено через 16 минут Кстати. Вопрос по добавлению узлов. В мануале написан следующий код для обновления:
0
|
||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 05.11.2016, 20:02 | ||
|
0
|
||
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|||||||||||
| 06.11.2016, 10:15 [ТС] | |||||||||||
|
Jewbacabra, вчера дико уставший был, не до конца все описал
![]() В запросе выше 13 - это значение правого индекса родительского узла. То есть если в узле А справа 13 и я добавляю прямого потомка к узлу А, то надо выполнить вышеуказанный запрос. Но если его выполнить, то в узле А справа таки останется 13, хотя должно стать 15 по идее. Поэтому я вот и подумал о том, что в запросе ошибка, и должно быть не
0
|
|||||||||||
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
||||||
| 06.11.2016, 17:12 | ||||||
1
|
||||||
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
|
| 28.11.2016, 10:09 [ТС] | |
|
Продолжает тему.
Никак не могу разобраться как перемещать узлы... Гугл юзал, не помог. нашел пару статей, но я почти ничего не понял... Как перемещать узлы с потомками? может кто детально разжует? Было бы здорово Или хотя бы просто напишите запросы с пояснениями...Спасибо!
0
|
|
|
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
|
|
| 28.11.2016, 14:36 | |
|
тут все расписано nested set
1
|
|
|
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
|
||||||
| 29.11.2016, 00:28 [ТС] | ||||||
|
fanatikus, спасибо, буду думать.
Добавлено через 9 часов 15 минут Я все равно не въезжаю... не тянут мои мозги это... надеюсь со временем разберусь. Решил проблему по-другому. Так как удаление и добавление узлов у меня реализовано, то решил проблему перемещения при помощи этих двух методов. вот так это реализовано у меня...
0
|
||||||
| 29.11.2016, 00:28 | |
|
Помогаю со студенческими работами здесь
15
Необычная выборка с сортировкой Выборка из 2-х таблиц c лимитом и сортировкой Выборка строк с сортировкой по дате
Вывод из таблицы БД с сортировкой по датам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|