Nested Sets: приоткрытое дерево конкретной ветки

kvf77

Red Devil
Nested Sets: приоткрытое дерево конкретной ветки

необходимо вывести всю всю ветку конкретного ID, чтобы она была приоткрыта (то есть те элементы, чья глубина level больше чем глубина нужного ID на 1 не показывались. Не могу сообразить как ограничить все одной веткой. Потому что для всего дерева получается, а для конкретной ветки - нет
 

csa

Guest
Re: Nested Sets: приоткрытое дерево конкретной ветки

list($left, $right, $level) = SELECT left, right, level FROM table WHERE id=$id
SELECT * FROM table WHERE level = $level+1 AND left>$left AND right<$right
 

kvf77

Red Devil
ну и что толку от такого запроса? он совсем другое делает нежели я просил
 

csa

Guest
от корня дерева, что ли?

WHERE (..) OR left<=$left AND right>=$right
 

kvf77

Red Devil
мне нужно ПРИОТКРЫТОЕ дерево - сделать выборку предложенную тобой можно на раз - мне нужно условие приоткрытости выполнить
впрочем я решил это проблему хотя и не очень оригинальным способом :-(
 

csa

Guest
что значит приоткрытое?
чем именно мой запрос не устраивает?
 

kvf77

Red Devil
помоему в оригинальном вопросе написано что значит приоткрытое дерево:

1
2
2
3
2

вот если текущий раздел с левелом 1, то видим
1
2
2
2
 

csa

Guest
ну и чем тогда не устраивает?
SELECT * FROM table WHERE (level = $level+1 AND left>$left AND right<$right ) OR ( left<=$left AND right>=$right )
для тех, кто ниже, будет проверяться левел, для остальных - только принадлежность стволу ветви
 

pachanga

Новичок
To kvf77: ты пытаешься сделать нечто похожее на дерево в эксплорере, т.е. выборку по открытым/закрытым родителям?
 

csa

Guest
одним запросом такое, похоже, не получится сделать
 

Макс

Старожил PHPClub
поищи по форуму. Делается 2-мя запросами :
- первый запрос определяет всех родителей для указанного ID
- второй для каждого родителя выводит его непосредственных детей (без внуков/правнуков)
 
Сверху