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

Вниз

посчитать сумму параметров дочерних эл-тов   Найти похожие ветки 

 
nachi   (2009-07-01 11:31) [0]

Удалено модератором
Примечание: СПАМ


 
Вариант   (2009-07-01 12:25) [1]

update  имя_таблицы_обновления
     set par = (select sum(par) from имя_таблицы_выборки  where parent_id =имя_таблицы_обновления.id)

Или в запросе у тебя "tablе" в UPDATE и SELECT одна и та же таблица (имя_таблицы_обновления=имя_таблицы_выборки)?


 
nachi   (2009-07-01 12:42) [2]


> Или в запросе у тебя "tablе" в UPDATE и SELECT одна и та
> же таблица (имя_таблицы_обновления=имя_таблицы_выборки)?
>

ага


 
Ega23 ©   (2009-07-01 12:42) [3]

Так это же Level получается. Только помноженный на коэффициент, нет?


 
nachi   (2009-07-01 12:45) [4]


> Ega23 ©   (01.07.09 12:42) [3]

не, значение par может быть любым числом...


 
Ega23 ©   (2009-07-01 12:46) [5]

Погоди. Вот у меня таблица
1,null,0
2,1,0
3,1,0
4,2,0
5,2,0
6,3,0
7,3,0

при любом изменении par у меня должна запускаться рекурсивная обновлялка, которая смотрит, есть ли да данной записи дети. Если есть - обновить им par


 
Ega23 ©   (2009-07-01 12:47) [6]

Тогда либо триггер, либо ХП (но обновлять тогда уже строго через неё).


 
nachi   (2009-07-01 12:59) [7]

да-да, и триггер есть и ХП... не катит... долго.

а вообще, задача стоит следующая:
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 - функция, возвращающая всех детей ветви.

Как решить данную проблему? Приведенный код работает жутко медленно... строк - пока сотня тысяч, где-то...


 
nachi   (2009-07-01 13:08) [8]


> Вариант   (01.07.09 12:25) [1]

а вот про from не знал. Спасибо, ща с ним попробую переписать, что выше...



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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
3-1246517778
greg123
2009-07-02 10:56
2010.10.17
Запрет добавления новой строки при прокрутке таблицы TIBTABLE


15-1279010786
Артур Д.
2010-07-13 12:46
2010.10.17
Опыт работы с фрилансерами


6-1227179897
Decoding
2008-11-20 14:18
2010.10.17
Indy + Cookie


2-1280136272
Jacksotnik
2010-07-26 13:24
2010.10.17
Помогите с SELECT INTO OUTFILE


2-1279611355
beginner
2010-07-20 11:35
2010.10.17
Как разернуть окно на весь экран?