Производительность Nested Sets (множественные хозяева)

Screjet

Новичок
ONK
С таблицей предков вопросов нет.
Код:
SELECT `NodeID` FROM `parents` WHERE `ParentID`=$x
получить все элементы для узла родителя,
или
SELECT `ParentID`FROM `parents` WHERE `NodeID`=$x
получить всех родителей,

и, классическое продолжение
SELECT `ParentID`FROM `tree` WHERE `NodeID`=$x
получить прямого родителя,
или
SELECT `NodeID`FROM `tree`WHERE `ParentID`=$x
получить всех прямых наследников
Потому и попросил уточнить, для чего третья таблица (descendants)
 

ONK

Пассивист PHPСluba
Screjet
Таблица потомков нужна для построения полностью развёрнутой ветви дерева, начиная от произвольного узла.
[SQL]
SELECT b.* FROM `descendants`a, `tree` b WHERE b.NodeID = a.ChildID AND a.NodeID = '$x' -- ORDER BY b.xxx
[/SQL]
Это запрос возвращает все записи, составляющие ветвь дерева начиная от заданного узла. Далее я с помощью соответствующего API инициализирую и строю само дерево.

Т.Е. для построения дерева от заданного узла нужен только 1 легкий SQL запрос.

-~{}~ 04.10.05 20:06:

модификатор [ sql ] портит запросы
Код:
SELECT b.* FROM `descendants`a, `tree` b WHERE b.NodeID = a.ChildID AND a.NodeID = '$x' -- ORDER BY b.xxx
 

Screjet

Новичок
Код:
SELECT t.*
FROM `parents`p
INNER JOIN `tree` t ON t.id=p.NodeID
WHERE p.ParentID=$x
кажись тот же эффект.
 

ONK

Пассивист PHPСluba
Screjet, похоже, ты прав. Я как-то даже и не подумал посмотреть с этой точки зрения, нагородил столько огородов,,, бывает. ;)
 
Сверху