Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизДерево подчинённости Найти похожие ветки
← →
Pashkerton (2005-02-25 10:50) [0]Есть дерево (таблица примерно такая)
id parent name
1 -1 a
2 1 b
3 2 c
4 2 d
5 3 e
Пусть "name" это отделы какой либо организации. За каждам отделом
числится n сотрудников. Как сделать просмотр организовать просмотр всех сотрудников дочерних веток дерева?
← →
andycat (2005-02-25 10:57) [1]в смысле TTree?, если да в Делфях есть пример по заполнению ветвей дерева - ничего сложного
← →
DiamondShark © (2005-02-25 10:58) [2]Никак. В исходных данных никаких n сотрудников нет.
← →
Pashkerton (2005-02-25 11:03) [3]2 таблицы. Перву я уже описал. Вторая пусть будет такой
key id fio
где id номер отдела, остальные поля говорят сами за себя.
у отдела "b" есть подотделы c d e. Так как же посмотреть всех сотрудников всех веток которые ниже звена b?
← →
andycat (2005-02-25 11:06) [4]по моему обычная задача по логике - несколько вложенных циклов с сохранением промежуточных результатов в TTree
← →
Pashkerton (2005-02-25 11:12) [5]Можно в принципе в парент хранить всех предков по чепочке до вершины. При выборке брать id того отдела в котором я есть и выбирать все id где parent like id*. Вот это выход!
← →
TUser © (2005-02-25 11:18) [6]Я примерно такую штуку делал, но хранил 2 таблицы
No - parent - first child - next child
← →
Digitman © (2005-02-25 11:21) [7]
> Можно в принципе в парент хранить всех предков по чепочке
> до вершины
дурней решения не придумаешь
> Вот это выход!
рекурсивный обход доч.узлов чем не устраивает ?
а если не устраивает, то почему бы не вести (синхронно с основной) вспом.таблицу, в которой фиксируются непрямые родственные связи между узлами, их отн.уровни и корневые ссылки ?
← →
ЮЮ © (2005-02-25 11:30) [8]SELECT Fio, d0.name
FROM
Persons p
LEFT JOIN Departments d0 ON p.Id = d0.id
LEFT JOIN Departments d1 ON d0.parent = d1.id
...
LEFT JOIN Departments d<k> ON d<k-1>.paremt = d<k>.id
WHERE
(d0.Id = :Department) OR
(d1.Id = :Department) OR
...
(d<k>.Id = :Department)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c