Общие > Базы данных

Обсуждение статьи ДЕРЕВО КАТАЛОГОВ NESTED SETS (ВЛОЖЕННЫЕ МНОЖЕСТВА) И УПРАВЛЕНИЕ ИМ

<< < (12/12)

Arikon:
Помогите решить задачку. Вот исходные данные

1.


2.


По условию известны узлы, выделенные оранжевым. Нужно выбрать все узлы, выделенные зеленым.

Phoinix:
Твои предложения?

Arikon:
Решение было найдено благодаря ru_mysql коммунити в livejournal

SELECT DISTINCT
j2.*
FROM tree AS t1
LEFT JOIN tree AS tr ON tr.id = $root_node_id
LEFT JOIN tree AS j1 ON (j1.l = t1.r)
LEFT JOIN tree AS j2 ON (j2.l >= j1.l AND j2.r = tr.l AND j1.r = tr.level
ORDER BY j2.l ASC

$root_node_id - Id корня
$current_node_id - Id выделенного узла
id - идентификатор узла
l - left key
r - right key
level - уровень

Запрос выбирает все "приоткрытое" дерево, начиная от указанного корня. Полезен для строительства "приоткрытого" меню любого уровня вложенности.

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии