Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.23;
Скачать: CL | DM;

Вниз

Подскажите как?   Найти похожие ветки 

 
dihlos ©   (2002-09-03 13:06) [0]

Здравствуйте!
Имеется БД примерно такой структуры:
ID Name ParentID
1 One 0
2 Two 0
3 Two-1 2
4 Two-2 2
....
т.е она отображает дерево данных:
|- One
|- Two
|- Two-1
|- Two-2

Для удаления Two с его подразделами можно использовать запрос:
DELETE FROM base
WHERE ID=2 AND ParentID=2.

Но как быть если еще у Two-1 или у Two-2 есть "потомки"?, т.е:
...
|- Two-2
|- Two-2-1
|- Two-2-2
|-..... и.т.д..
Ведь в этом случае остаются "мертвые" ссылки.
Подскажите, плиз!


 
Леха_   (2002-09-03 13:10) [1]

обычно это делается с помощью тригеров
а если без них то рекурсивно из программы


 
DiHLoS ©   (2002-09-03 13:11) [2]

Ну а как примерно?


 
NickBat ©   (2002-09-03 13:22) [3]

Можно попробывать после первого удаления вызвать удаление всех ветвей ParentID которых не существует, кроме 0. Что-то вроде

DELETE FROM base
WHERE ID=2

DELETE FROM base
WHERE PARENTID NOT IN (SELECT ID FROM base) AND ParentId<>0


 
oss   (2002-09-03 13:24) [4]

function deleteTree(id:integer)
begin
...bla-bala...
...bla-bala...
deleteTree(ID)
...bla-bala...
end



Страницы: 1 вся ветка

Текущий архив: 2002.09.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
3-73548
Vovik
2002-09-03 12:22
2002.09.23
Просмотр удаленных записей.


4-73931
TiredDmitry
2002-08-05 00:50
2002.09.23
Как ОТЖАТЬ клавишу.


1-73628
Skif
2002-09-12 12:50
2002.09.23
Переимонвать по маске


1-73689
kronprince
2002-09-10 20:52
2002.09.23
TListView при ViewStyle=vsReport


1-73715
liho26
2002-09-11 06:43
2002.09.23
версию программы в Form1.Caption. Как это сделать?