connect_by_root и аналитика - как-нибудь лечится?

Андрей Панфилов
Дата: 01.12.2009 09:28:03
WITH t AS (SELECT   1 AS id, NULL AS parent_id, 1 AS val FROM DUAL
           UNION ALL
           SELECT   2, 1, 1 FROM DUAL
           UNION ALL
           SELECT   3, NULL, 4 FROM DUAL)
    SELECT   RPAD ('*', (LEVEL - 1) * 2, '*') || id,
             CONNECT_BY_ROOT id,
             SUM (val) OVER (PARTITION BY CONNECT_BY_ROOT id) AS s
      FROM   t
CONNECT BY   PRIOR id = parent_id
START WITH   parent_id IS NULL;

ID	ROOT	S

1 3 2
**2 3 2
3 3 4
Elic
Дата: 01.12.2009 09:38:27
Иерархия и аналитика на одном уровне - гремучая смесь. Надо разносить на разные уровни.
Андрей Панфилов
Дата: 01.12.2009 10:18:50
Elic,

а хотя бы на корректность SUM (val) OVER (PARTITION BY CONNECT_BY_ROOT id) AS s
можно рассчитывать?
Добрый Э - Эх
Дата: 01.12.2009 10:25:40
Андрей Панфилов
Elic,

а хотя бы на корректность SUM (val) OVER (PARTITION BY CONNECT_BY_ROOT id) AS s
можно рассчитывать?
Никакое сочетание аналитики и иерархических запросов в пределах одного уровня вложенности не может дать 100% уверенности в корректности полученного результата.

З.Ы.
Что вас всех так ломает сделать дополнительный уровень вложенности? Оракл нормально работает с подзапросами, в отличии от неконтролируемых смесей аналитики, "деревяшек" и ANSI-JOIN-ов