Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Задачка  [new]
Денис
Member

Откуда: Уфа
Сообщений: 46
Всем привет. Столкнулся с такой вот задачкой, попробуйте решить.

Имеется две таблицы
ta (id int, parent int)
и
tb (ix int, taid int, value int)

В таблице ta содержатся записи типа
(1, 0)
(2, 1)
(3, 1)
(4, 2)
(5, 2)
Иными словами, это - дерево с корнем id = 1 и листьями id = 3, 4 и 5.
В таблице tb:
(1000, 1, 0)
(1001, 1, 0)
(1000, 2, 0)
(1001, 2, 0)
(1000, 3, 7)
(1001, 3, 8)
(1000, 4, 9)
(1001, 4, 5)
(1000, 5, 0)
(1001, 5, 6)
Т.е. для всех листьев значения поля value ненулевые.
Нужно сделать так, чтобы во всех корнях появилась сумма соответствующих значений value, т.е. для данного примера первые 4 записи таблицы tb должны стать:
(1000, 1, 16)
(1001, 1, 19)
(1000, 2, 9)
(1001, 2, 11)
Причем все это - для произвольного дерева и произвольного количества всевозможных tb.ix. Всем спасибо за участие :-)
30 май 03, 15:28    [216791]     Ответить | Цитировать Сообщить модератору
 Re: Задачка  [new]
Fomich
Member

Откуда:
Сообщений: 1
Заведи еще одну табличку из двух полей
1- id
2- upid
в которой должны содрежаться записи для всех вышестоящих уровней дерева.
В итоге ты избежишь рекурсии и все просто решиться.

К примеру, у тебя есть лист третьего уровня с Id=5,
id корня - 1, id его прямого парента 3. в итоге в табличке появятся три записи
5,1
5,3
5,5
30 май 03, 16:11    [216877]     Ответить | Цитировать Сообщить модератору
 Re: Задачка  [new]
Денис
Member

Откуда: Уфа
Сообщений: 46
Мысль уловил, спасибо.
30 май 03, 16:46    [216973]     Ответить | Цитировать Сообщить модератору
 Re: Задачка  [new]
Rustam
Member

Откуда:
Сообщений: 1
Смотри статью, думаю она поможет в данной задаче.
http://sdm.viptop.ru/articles/sqltrees.html
31 май 03, 10:20    [217333]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить