Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Arikon

Страницы: [1]
1
Решение было найдено благодаря 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.l AND j1.r >= t1.r)
LEFT JOIN tree AS j2 ON (j2.l >= j1.l AND j2.r <= j1.r AND j2.level IN (j1.level, j1.level + 1))
WHERE t1.id = $current_node_id AND j1.l >= tr.l AND j1.r <= tr.r AND j2.level >= tr.level
ORDER BY j2.l ASC

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

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

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

1.


2.


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

Страницы: [1]