-
Удалено модератором Примечание: СПАМ
-
update имя_таблицы_обновления set par = (select sum(par) from имя_таблицы_выборки where parent_id =имя_таблицы_обновления.id)
Или в запросе у тебя "tablе" в UPDATE и SELECT одна и та же таблица (имя_таблицы_обновления=имя_таблицы_выборки)?
-
> Или в запросе у тебя "tablе" в UPDATE и SELECT одна и та > же таблица (имя_таблицы_обновления=имя_таблицы_выборки)? >
ага
-
Так это же Level получается. Только помноженный на коэффициент, нет?
-
> Ega23 © (01.07.09 12:42) [3]
не, значение par может быть любым числом...
-
Погоди. Вот у меня таблица 1,null,0 2,1,0 3,1,0 4,2,0 5,2,0 6,3,0 7,3,0
при любом изменении par у меня должна запускаться рекурсивная обновлялка, которая смотрит, есть ли да данной записи дети. Если есть - обновить им par
-
Тогда либо триггер, либо ХП (но обновлять тогда уже строго через неё).
-
да-да, и триггер есть и ХП... не катит... долго.
а вообще, задача стоит следующая: tree_table: id, parent_id, par, uniq_par
text_to_tree: tree_id, text_id
text_to_tree.tree_id - внешний ключ к tree_table нужно пересчитывать параметры par и uniq_par следующим образом: каждый параметр par строки дерева равно количеству соответствующих строк в text_to_tree с учетом принадлежности всем дочерним темам. uniq_par - то же самое, только text_id должен быть уникальным в наборе. Вроде внятно объяснил. Пока данных было мало, этих полей вообще не существовало - все делал запросом, но, с ростом табличек, пришлось от этого отказаться - слишком долго выполнялся запрос. Теперь, тормозит уже просто обновление. Делал так:
update content_tree set cnt = (SELECT count(u_txt) FROM text_to_tree WHERE tree_id IN ( SELECT id FROM all_subj_child (id) )), u_par = (SELECT SUM(u_txt) FROM text_to_tree WHERE tree_id IN ( SELECT id FROM all_subj_child (id) )), cnt_uniq = (SELECT COUNT(DISTINCT(text_id)) FROM text_to_tree WHERE tree_id IN ( SELECT id FROM all_subj_child (id) ) ) where id in (select id from all_subj_child(@id))
all_subj_child - функция, возвращающая всех детей ветви.
Как решить данную проблему? Приведенный код работает жутко медленно... строк - пока сотня тысяч, где-то...
-
> Вариант (01.07.09 12:25) [1]
а вот про from не знал. Спасибо, ща с ним попробую переписать, что выше...
|