Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Вложенное меню


Автор: AlexanderI 15.5.2008, 11:32
Здравствуйте.

Есть таблица:
id | parent_id
1  |
2  |1
3  |
4  |2
5  |3
6  |3

Эта таблица меню сайта с вложенностью. Т.е. parent_id это и есть вложенность.
В данный момент меню собирается через много sql запросов. т.е. для каждой вложенности производится отдельный sql запрос.
А каким образом собрать меню с помощью одного запроса ? Подскажите какой-нибудь алгоритм как правильно распарсить через 1 запрос к sql.
Хотелось бы чтобы при выводе создавалось видимость вложенности.
1
-2
--4
3
-5
-6


Автор: ginnie 15.5.2008, 11:41
Уважаемый AlexanderI, выбираете все данные "SELECT id, parent_id FROM table ORDER BY id". Дальше скриптом создаете структуру меню (например, массив массивов).
Я бы еще рекомендовал добавить кэширование (перечитывать данные из БД если изменился MAX(id)).

Автор: GoDleSS 15.5.2008, 14:21
Есть ли речь идет об oracle - рекурсивные запросы там есть, а вот в остальных случаях - см. http://forum.vingrad.ru/index.php?showtopic=211374&view=findpost&p=1512473

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)