Как построить Древо(родитель сын) минимальными затратами

Статус
В этой теме нельзя размещать новые ответы.

Joker84

Постоялец
Регистрация
8 Авг 2007
Сообщения
68
Реакции
2
Добрый день, прошу вашей помощи в оптимизации построения древа!

в БД таблица строемого древа



id ! ИМЯ ! ID родителя


cейчас я вывожу это извратом :
Код:
	SELECT a.* FROM таблица AS a WHERE id_parent='0'"
 обработка -> и вывод 
     foreach($rows_region as $row_region) {
        echо $row_region->name;
        select_tree_child($row_region->id,'antijob_region');
         // вывод детей
	}

ф-я выводв детей
Код:
function select_tree_child($id,$table)  // ф-я необходимая для вывода select подкатегорий.
{   "SELECT a.* FROM  таблица AS a WHERE id_parent='{$id}'");
 foreach($rows as $row) {
	   echo'    '.$row->name;
		}
}


Таким образом получается очень много запросов. подскажи те пож-та как сделать это оптимально, за 1н-2 запроса
 
По-нормальному ты этого не сделаешь.

Nested Sets - еще тот геморрой. А если просто id и parent - то увы, селектов получится чуть ли не по количеству записей в базе.

Единственный путь, который могу тебе предложить - заведи вместо parent path. Пусть у тебя там будет varchar типа "1-3-121-12" - просто указаны id всех родителей до самого корневого. И запросы тогда будут в стиле WHERE path LIKE "1-3-%" и в таком духе. Там тогда много можно будет выгребать средствами самого мускула.
 
Nested Sets, в принципе, хорошо себя показывают, но только на статических или редкоизменяемых данных.

Для динамических данных задача (если нет сумасшедшей глубины) решается при помощи Adjacency List
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху