Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
FloppyDisc
Особый статус
597 / 203 / 156
Регистрация: 18.11.2015
Сообщений: 1,031
1

Adjacency List - Максимальный уровень вложенности

01.12.2017, 17:06. Просмотров 161. Ответов 2
Метки нет (Все метки)

Здравствуйте!

Помогите с парочкой вопросов. Есть таблица смежностей
idparent_id name sort_order
1 0 F1 1
2 0 F2 3
3 0 F3 2
4 1 F4 1
5 2 F5 2
6 1 F6 2
7 10 F7 1
8 2 F8 1
9 10 F9 2
10 3 F10 2
11 3 F11 2
12 9 F12 1
13 9 F13 2

Как определить максимальный уровень вложенности вложенности? Я попробовал хранимую процедуру, но она мне не подходит, не знаю почему, но после нее остальные запросы не работают Мб её можно переделать в функцию?
Вот она:
Кликните здесь для просмотра всего текста
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
BEGIN
 DECLARE R INT;
 DECLARE D INT;
 SET D=0;
 DROP TEMPORARY TABLE IF EXISTS children;
 CREATE TEMPORARY TABLE children AS (SELECT id AS ids
                                       FROM description_table 
                                      WHERE internal_key IS NOT NULL);
 DROP TEMPORARY TABLE IF EXISTS children_prev;
 CREATE TEMPORARY TABLE children_prev AS (SELECT * FROM children );
 SET R = ( SELECT COUNT(*) FROM children ); 
 WHILE ( R > 0 ) DO
   DROP TEMPORARY TABLE IF EXISTS children_aux;
   CREATE TEMPORARY TABLE children_aux AS (
     SELECT id AS ids
       FROM description_table R  
       INNER JOIN  children_prev C ON C.ids = R.internal_key
   );
   SET R = ( SELECT COUNT(*) FROM children_aux );  
   INSERT INTO children 
      SELECT * FROM children_aux;
   TRUNCATE TABLE children_prev;
   INSERT INTO children_prev
      SELECT * FROM children_aux;   
   SET D=D+1;
 END WHILE;
 SELECT D;
END


В данном примере должно быть 4
0
Миниатюры
Adjacency List - Максимальный уровень вложенности  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2017, 17:06
Ответы с готовыми решениями:

Запрос: вернуть максимальный уровень вложенности
Возможно ли сделать такой запрос который вернёнт цифру максимального уровня вложенности в таблице...

Найти максимальный уровень вложенности заданного списка
Помогите написать программу, которая находит максимальный уровень вложенности заданного списка. ...

Уменьшить уровень вложенности
Всем доброго вечера. Нужна помощь по Битриксу. Нужно уменьшить уровень вложения. ...

Ограничение на уровень вложенности
Доброго времени суток. Столкнулся с проблемой при автоматической генерации отчёта в формате...

Изменить уровень вложенности url
Нужна ваша помощь. Тармошил сообщество instantcms, но оно похоже бессильно. В движке соц.сети...

2
retvizan
297 / 285 / 107
Регистрация: 09.04.2011
Сообщений: 794
01.12.2017, 17:48 2
такая задача легко решается с помощью рекурсивных отв (доступны в mysql8/mariadb10.2), в более ранних их можно реализовать с помощью хранимой процедуры, см статью ( в ней есть шаблон процедуры)
0
FloppyDisc
Особый статус
597 / 203 / 156
Регистрация: 18.11.2015
Сообщений: 1,031
01.12.2017, 17:59  [ТС] 3
retvizan, как раз таки процедура мне не очень нужна, я уже писал выше ее, считает она правильно. Видимо придется пересеть на mariadb, под рукой нет mysql8
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2017, 17:59

Обработать каждый уровень вложенности отдельно
Нужно обработать каждый уровень вложенности отдельно относительно какой-то папки... То есть нужно...

Loadstring и бесконечный уровень вложенности таблицы
t={s={}} loadstring("t.s.s=t.s")() Выполнение этого скрипта приводит к появлению таблицы с...

Хранимые процедуры-превышен уровень вложенности
Здравствуйте! Помогите, пожалуйста, разобраться со вложенностью процедур. В базе данных есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru