Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизКонсолидация данных Найти похожие ветки
← →
}|{yk © (2004-11-10 12:38) [0]Допустим, у нас есть таблица фактов, примероно такой структуры
cust1 integer
cust2 integer
cust3 integer
unit integer
currency integer
month integer
year integer
summa float
причем cust1, cust2, cust3 - это иерархические измерения.
Т.е. в упрощенном виде эти таблицы имею структуру
mem_id integer
mem_pid integer
mem_name varchar2(32)
Данные вносятся в таблицу фактов на нижние уровни этих иерархий (на "листья").
Однако, желательно чтобы данные поднимались на все верхние уровни.
Для этого я использую такой подход - делается проход по таблице фактов, и в результирующий набор
(ХП в Interbase) пишу так: по каждому измерению иду вверх, находя всех родителей вплоть до -1. Во время прохода
по остальные иерархические измерения фиксированы.
Таким образом, в результирующем наборе будет количество записей равное количеству записей в таблице фактов, умноженное на вложенность во всех иерархиях.
Решал ли кто похожие задачи, оптимален ли этот подход?
← →
HSolo © (2004-11-10 13:25) [1]Я веду (триггерами) вспомогательную таблицу вида
id integer
parent_id integer
где перечислены все пары "предок-потомок"; например, если (1) есть предок (2), а (2) есть предок (3), то содержимое этой таблицы:
id parent_id
1 1
2 2
2 1
3 3
3 2
3 1
Тогда для любого узла все его потомки со всеми их данными выбираются простым join-ом с этой таблицей.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c