Форум: "Базы";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизСложная выборка, прошу совета у Гуру Найти похожие ветки
← →
SergeyV (2003-08-18 17:02) [0]Хотя вопрос возможно кому-то покажется и ламерским но все же...
(лично я считал что это просто до тех пор пока сам не попробовал)
Имеется некоторая таблица вида
ID Pole_2 Pole_3 Pole_4 .....
При этом в Pole_4 может содержать значение совпадающее с каким-либо значением в поле ID (кроме собственной записи) или 0.
Необходимо сделать выборку по какому-то ID при чем если в Pole_4 встречается ID другой записи необходимо добавить и ее.
Проблема в том что степень вложенности переменная от нуля и до 10-20 пунктов. При этом зацикливания не происходит (это контролируется на этапе формирования данных)
Пробовал организовать цикл на курсорах но запутался, в таблице появились двойные значения. Видимо не обойтись без #TempTable.
Уважаемые Гуру, подскажите решение пожалуйста.
← →
Соловьев (2003-08-18 17:06) [1]дерево+дети?
← →
ermserg (2003-08-18 17:07) [2]pochitay pro Tree-strukturi v faqe
← →
MsGuns (2003-08-18 17:09) [3]Не совсем понял - в Pole_4 содержится или 0 или ссылка на поле ID этой же таблицы ? И вообще что-то подсказывает, что здесь пахнет деревом ;))
← →
MsGuns (2003-08-18 17:13) [4]Если это дерево, то одно из решений - написать вьюху, которая будет содержать 3 поля вместо 2:
ID записи
ID родителя
ID верхнего узла (с которого идет разузлование)
Из этого НД удобно высекать любую ветку вместе со всеми ее сучками и листьями
← →
ZrenBy (2003-08-18 17:13) [5]http://www.sql.ru/forum/actualthread.aspx?bid=1&tid=26347
← →
SergeyV (2003-08-18 17:18) [6]To MsGuns
Да, это действительно дерево.
Вот только в качестве известного выступает корень.
А дети (ветки) могут меняться от случая к случаю (как пользователь задаст). Так что для них определять родителя несколько неудобно.
Проблема в том что нужно идти не от детей к родителям (это было бы проще) а наоборот.
В качестве известного берется некоторый ID и далее по нему нужно раскрутить в отдельную таблицу всю структуру.
← →
Соловьев (2003-08-18 17:21) [7]
> SergeyV (18.08.03 17:18) [6]
получить всех детей родителя?
← →
SergeyV (2003-08-18 17:22) [8]Ктому же следует учесть что корней то унас несколько
и одна и таже ветка может быть вложена на уровне 2 для одного корня и на уровне 7 для другого, а также и сама являться корнем.
← →
Соловьев (2003-08-18 17:23) [9]"чернобыльское дерево" надо сказать. :)
← →
Соловьев (2003-08-18 17:24) [10]граф?
← →
MsGuns (2003-08-18 17:41) [11]Че-то похоже на состав заказов (см Соловьев © (18.08.03 17:24) [10]). Когда-то мы делали так:
К основной таблице, содержащей пару ID -> Paren ID мы "рисовали" (создавали как временную) зеркальную с парой ID -> Child ID и т.о. существенно ускоряли разузлование в обе стороны.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c