![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
имеется таблица
id sub_id 0 0 1 0 2 0 3 1 4 3 5 4 6 4 которой соответствует дерево Код:
типа 0 0 -> 1 0 -> 1-> 3 0 -> 1-> 3 ->4 0 -> 1-> 3 ->4 ->5 0 -> 1-> 3 ->4 ->6 0 -> 2 или нужно использовать другой подход к хранению и организации древовидной структуры? Последний раз редактировалось ADSoft; 30.07.2009 в 16:26. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 29.06.2008
Сообщений: 603
|
![]()
select id, subid from таблица
потом разбор в цикле Древовидные структуры обычно (у меня) так и хранятся. |
![]() |
![]() |
![]() |
#3 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
Оракловый вариант
Код:
З.Ы.2: для корневого элемента парент должен быть нулл-овым, иначе дерево само на себя заЛУПится (от слова loop) |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
целесообразнейй цикл в запросе делать или ... на самом деле потом в цикле делать че хотел?
а если это дерево на 1000 элементов.... не загнется запрос или цикл ? |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
после изучения данного вопроса пришел к следующим выводам:
то что есть в Оракле абсолютно нет в стандартном SQL... а именно - в интересующем меня MySQL. Оказывается существует несколько способов организации таких данных.... все они имеют свои + и - Вот не могу решить что и как использовать.... |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 04.10.2008
Сообщений: 1,485
|
![]()
лично я использую такой алгоритм:
сначала сделать выборку абсолютно всех записей из таблицы попутно сложить все корневые элементы в новый массив (1) также сложить все элементы в еще один массив (2) для всех элементов массива (1) сформировать подмассив из тех элементов, родительский элемент которых равен текущему корневому элементу если подмассив у корневого элемента оказался непустым - рекурсивно выполнить предыдущий шаг для подмассива ------------- в итоге получается многомерный структурированный массив, в алгоритм можно добавить все что нужно, включая запоминание списка родительских и дочерних элементов, различные подсчеты и т п ------------- результат выполнения этого алгоритма желательно жестко кешировать минимум на час свободен... |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
PL/SQL | artemavd | Помощь студентам | 1 | 20.04.2009 10:46 |
SQL | Ash | БД в Delphi | 6 | 26.01.2009 09:14 |
sql или не sql | Diamand | SQL, базы данных | 9 | 18.09.2008 17:17 |
Запросы SQL и PL/SQL | sharpest | Фриланс | 1 | 05.02.2008 18:58 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |