Помогите создать зарос к таблице с деревом каталогов

fonbaron

Велосипедист
Нашел решение для построения дерева вот такой метод решения. Но возник вопрос:
Как получить данные если мы получаем в запрос id и уровеь вложенночти, и приетом необходимо выбрать все вложенные каталоги из каталога с соответствующем id на указанный уровень вложенновсти, например 2?
 

WMix

герр M:)ller
Партнер клуба
все где левое больше левого и правое меньше правого и левелом такимто?
 

WMix

герр M:)ller
Партнер клуба
мне скуэл написать, или дальше сам догадаешься?
 

WMix

герр M:)ller
Партнер клуба
PHP:
select * from  my_tree
where left_key>$left and right_key < $right and level = $level
 

fonbaron

Велосипедист
Левый ключ и правый ключ не известны только id и уровень вложенности
 

WMix

герр M:)ller
Партнер клуба
блин
PHP:
select left_key, right_key from  my_tree
where id = $id
 

fonbaron

Велосипедист
А можно как то одним запросом все это дернуть?
с вложенными запросами или не стоит
 

WMix

герр M:)ller
Партнер клуба
можно но join на меньше больше писать наверно ненадо...
 

WMix

герр M:)ller
Партнер клуба
PHP:
select 
t2.*
from my_tree t1, my_tree t2
where t2.left > t1.left and ...
and t1.id = $id
 

WMix

герр M:)ller
Партнер клуба
поодиночке лучше... на мой взгляд...
 

WMix

герр M:)ller
Партнер клуба
по одному запросу база работает буквально сразу, второй запрос он хоть и правильно отработает, погрузит сервер при больших деревьях
сначало создается NxN строк а после удаляются (хоть даже это происходит одновременно)
 

fonbaron

Велосипедист
т.е.
select
t2.*
from my_tree t1, my_tree t2
where t2.left > t1.left and ...
and t1.id = $id
лучше не использовать а сделать отдельными запросами в которых узнавать ключи и подставлять их в следующий запрос?
 

WMix

герр M:)ller
Партнер клуба
я считаю так... 2 запроса это не 42 если дерево на пидах, и базу не перегрузят... четко поставленная задача, дай по ид, дай по вложенности... и не даже не парься!
 

fonbaron

Велосипедист
Просто во всех книгах пытаются убедить что чем меньше запросов тем лучше!?
Может я не верно понимаю?
 

WMix

герр M:)ller
Партнер клуба
это правда, но не перегибай палку.
 
Сверху