| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как обойти это дерево? |
| Автор: Артем125 28.9.2009, 09:37 | ||
| Привет всем дано дерево для примера в прикрепленном файле его необходимо обойти, получая каждую ветку, затем отображать в указанном ниже порядке. 39 | -----41 | |-----48 | |-----52 |------54 |------53 ------42 ------43 |-------60 думаю так сделать: одним запросом вытаскиваю самую левую ветку
запоминаю значения в массив 39 41 58 52 54 далее вытаскиваю следующую ветку, сравниваю значения с массивом и вывожу те значения (53), что нет в массиве, и т.д. Правильный ли ход мыслей? и !!!!Вопрос 2!!! Посмотрите на sql запрос. если средствами php формировать вот эти строки LEFT JOIN ".TABLE_SECTIONS." AS t3 ON t3.sections_parent = t2.sections_parent до тех пор, пока ветка не пройдена до конца, то как узнать в этом запросе сколько таких строк надо? |
| Автор: solenko 28.9.2009, 10:56 |
| Т.к. нужо обойти все дерево, то рационально выбирать ВСЕ данные одним запросом и обрабатывать уже на стороне php. |
| Автор: Артем125 28.9.2009, 11:00 |
| Тогда впринципе мой запрос подходит, только не знаю как узнать сколько таких LEFT JOIN ".TABLE_SECTIONS." AS t3 ON t3.sections_parent = t2.sections_parent строк формировать или может как то по другому все данные выцепить в массив? |
| Автор: Ипатьев 28.9.2009, 11:41 |
| SELECT * FROM table_sections |
| Автор: capitan 28.9.2009, 11:46 |
| Артем125, "Дерево каталогов NESTED SETS (вложенные множества) и управление им " http://www.getinfo.ru/article610.html Все остальные варианты хороши на маленьких объёмах. При больших объёмах, скрипты еле ворочаются. |
| Автор: Ипатьев 28.9.2009, 11:56 |
| при больших ставках ворочаются, как раз NESTED SETS |
| Автор: capitan 28.9.2009, 12:10 |
| Ипатьев, Делал каталог товаров с вложенностью категорий. После использования NESTED SETS , все стало гораздо шустрее работать. Кстати в статье куча ошибок в запросах. Пришлось многое переписывать. Единственное что пока не успел реализовать - это сортировку категорий. Не до неё |
| Автор: Ипатьев 28.9.2009, 12:20 |
| "все стало шустрее работать" - это совсем не показатель. сделал машину на дровах. после этого пересел на велосипед - стало гораздо шустрее! если кое-кто не умеет делать машины, то это совсем не означает, что они в принципе медленнее велосипеда. а еще есть мнение, что сами товары и каталог с разделами можно не класть в одну таблицу. и дерево волшебным образом станет маленьким. |
| Автор: capitan 28.9.2009, 15:20 |
| Ипатьев, товары от категорий разделены. Вложенность присутствует у таблицы с категориями. Вот их в админке и нужно выводить, чтобы работать. Причем вложенность не ограничена. По-этому из всех вариантов, выбрал все таки NESTED SETS. Все дерево обходится одним запросом SELECT безовсяких JOIN и UNION. |
| Автор: Ипатьев 28.9.2009, 15:23 |
В этом случае она небольшая, и nseted sets не представляет никаких преимуществ по сравнению с другими способами. |