|
|
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Пробовал получать сумму дочерних строк через запрос SELECT LEVEL, LPAD(' ', 10 * LEVEL) || NAME, SUBSTR(SYS_CONNECT_BY_PATH(NAME, '/'),1,INSTR(SYS_CONNECT_BY_PATH(NAME, '/'), '/', -1)-1) AS PATH, ZP, (SELECT SUM(ZP) FROM MY_TABLE2 B START WITH B.BOSS = A.ID CONNECT BY PRIOR ID = BOSS) TOTAL_CHILD_SAL FROM MY_TABLE2 A START WITH BOSS IS NULL CONNECT BY PRIOR ID = BOSS ORDER SIBLINGS BY NAME; После пробую получить запрос через WITH REC(WAY, NAME, LVL, WAY_2, ZP, BOSS, ID) AS (SELECT ' ' || '/' || NAME, NAME, 1 LVL, '' || '/' || ID, ZP, BOSS, ID FROM MY_TABLE2 WHERE BOSS IS NULL UNION ALL SELECT R.WAY || '/' || T.NAME, T.NAME, R.LVL + 1, R.WAY_2 || '/' || T.ID, T.ZP, T.BOSS, T.ID FROM MY_TABLE2 T JOIN REC R ON T.BOSS = R.ID ) SEARCH DEPTH FIRST BY ID SET ORD SELECT LVL, LPAD(' ', 10 * LVL) || NAME, SUBSTR(WAY, 1, INSTR(WAY, '/', -1) - 1), WAY_2, ZP FROM REC И пока не получается , есть возможность ли это сделать вообще в таком запросе ? Буду благодарен если подскажите . Таблицу прилагаю INSERT INTO my_table2 VALUES ( 1 ,0, 'Pushkin', 1); INSERT INTO my_table2 VALUES (2, 1, 'Gvidon' , 2 ); INSERT INTO my_table2 VALUES (3, 1, 'Rzevsii', 3); INSERT INTO my_table2 VALUES (4, 3, 'Dubrovski', 5); INSERT INTO my_table2 VALUES (5, 4, 'Petr1', 4); INSERT INTO my_table2 VALUES (6, 5, 'Nevski', 4); INSERT INTO my_table2 VALUES (7, 3,'Ruslan', 2); INSERT INTO my_table2 VALUES (23, 0, 'Ludmila' , 2 ); INSERT INTO my_table2 VALUES (8, 7, 'Gaivata', 4); INSERT INTO my_table2 VALUES (9, 2, 'Gendalf', 5); INSERT INTO my_table2 VALUES (10, 9, 'Sofia' , 4); INSERT INTO my_table2 VALUES (11, 10, 'Alice' , 5); INSERT INTO my_table2 VALUES (12, 2, 'Santa' , 11); INSERT INTO my_table2 VALUES (13, 14, 'Satana' , 4); INSERT INTO my_table2 VALUES (14, 0, 'God' , 2); INSERT INTO my_table2 VALUES (15, 14, 'Michael' , 5); INSERT INTO my_table2 VALUES (16, 13, 'Azzazel' , 3); INSERT INTO my_table2 VALUES (17, 14, 'Begemot' , 4); INSERT INTO my_table2 VALUES (18, 17, 'Voland' , 5); INSERT INTO my_table2 VALUES (19, 18, 'Maste_r' , 5); INSERT INTO my_table2 VALUES (20, 14, 'Berlioz' , 1); INSERT INTO my_table2 VALUES (21, 1, 'Raskolnikov' , 6); INSERT INTO my_table2 VALUES (22, 21, 'Marmeladov' , 6); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 13:07 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 17:41 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
SY, Нужна именно рекурсивный запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2018, 11:25 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Pol.kaНужна именно рекурсивный запросКому? Как лутше получить сумму по всем узлам дерева ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2018, 11:31 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Pol.kaSY, Нужна именно рекурсивный запросчто понимаете под "рекурсивным запросом" ? запрос с statrt with ... connect by prior ? (доступен с таких дремучих версий, что уж и не помню с каких именно) Или же рекурсивный WITH-subquery factoring clause ? (доступен с 11g, если мне память не изменяет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2018, 11:32 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Второй вариант , с первым всё получается довольно просто , проблема именно в втором варианте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2018, 11:51 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Elic, Спасибо но боюсь эта тема не поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2018, 11:55 |
|
||
|
Получение итоговых значений в иерархии
|
|||
|---|---|---|---|
|
#18+
Pol.kaElic, Спасибо но боюсь эта тема не поможет Да ты пойми что идя от папашки к чаду хоть чeрез иeрархию хоть через рeкурсию - собрать сумму по потомкам за один присест не получится. Придется прикручивать суммирование либо через subquery в select list либо через модельку либо еще как. Если идти от листа к корню (если LEVEL и ORDER не важен) то суммировать можно но при этом папашка будет просуммирован несколько раз если имеет несколько чад, так-что то-же непросто. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2018, 15:03 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39678146&tid=1883691]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 427ms |

| 0 / 0 |
