Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Хранение древовидных структур в БД

Сообщения:  [1-10]   [11-19] 

 
 автор: Loki   (04.08.2006 в 13:37)   письмо автору
 
   для: Axxil   (04.08.2006 в 13:24)
 

на самом деле

select id, parent_id, name from tbl 

а таблица может иметь еще сотню полей, так что с тем же успехом не получится:)

   
 
 автор: Axxil   (04.08.2006 в 13:24)   письмо автору
 
   для: Loki   (04.08.2006 в 13:21)
 

> рекурсию переложить целиком на php оставив всего один запрос к базе

select * from tbl

:)

с тем же успехом можно вообще базой не пользоваться. А хранить в тектовом файле.

   
 
 автор: Loki   (04.08.2006 в 13:21)   письмо автору
 
   для: pengo   (04.08.2006 в 10:14)
 

есть варианты. Как я уже сказал, можно использовать nested sets, можно завести поле со структурой дерева, можно рекурсию переложить целиком на php, оставив всего один запрос к базе, а можно использовать несколько левых объединений. Так что можно и без вложенных процедур:)

   
 
 автор: cheops   (04.08.2006 в 12:58)   письмо автору
 
   для: pengo   (04.08.2006 в 12:20)
 

Проверяёте значение $count внутри функции - если оно больше 25, покидайте функцию при помощи оператора return.

   
 
 автор: Axxil   (04.08.2006 в 12:53)   письмо автору
 
   для: cheops   (03.08.2006 в 13:54)
 

// поправленый вариант 
echo str_repeat("&nbsp;", $count).$table['name']."<br>"; 
Я так понимаю это дерево можно применять для организауии каталогов любого уровня вложенности. А можно ли это дело как-то оптимизировать, чтоб не нагружать сильно базу.
И вообще как такие деревья оптимизируют?
И в итоге что быстрее и лучше. Куча маленьких запросов или один большой? Что быстрее базу завалит?

   
 
 автор: pengo   (04.08.2006 в 12:20)   письмо автору
 
   для: cheops   (03.08.2006 в 16:57)
 

Уважаемый cheops, а если мне необходимо спуститься по дереву не больше чем на 5 вложений. Как тогда организовать функцию.

   
 
 автор: pengo   (04.08.2006 в 10:14)   письмо автору
 
   для: Loki   (03.08.2006 в 13:59)
 

Насколько я знаю, чтобы избежать рекурсии, придёться использовать вложенные процедуры в SQL-запросах.

   
 
 автор: cheops   (03.08.2006 в 16:57)   письмо автору
 
   для: pengo   (03.08.2006 в 14:13)
 

Конечно же имеется ввиду вызов
 recurse(0, 0);

   
 
 автор: pengo   (03.08.2006 в 14:13)   письмо автору
 
   для: cheops   (03.08.2006 в 13:54)
 

а почему

recurse(0, 0, $count);

ведь функция принимает только два параметра?

   
 
 автор: Loki   (03.08.2006 в 13:59)   письмо автору
 
   для: cheops   (03.08.2006 в 12:20)
 

Чтобы избежать рекурсии.

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования