У меня есть следующая таблица:
parent_id child_id child_class
1 2 1
1 3 1
1 4 2
2 5 2
2 6 2
Parent_id представляет идентификатор папки. Идентификатор дочернего элемента представляет либо дочернюю папку (где дочерний_класс=1), либо дочерний файл (где дочерний_класс=2).
Я хотел бы получить счетчик свертки (снизу вверх) только для всех файлов (child_class=2) следующим образом. например, если C является конечной папкой (без дочерних папок) с 5 файлами, а B является родительской папкой C, в которой есть 4 файла, счетчик C должен показывать 5, а счетчик B должен показывать 9 (= 5 из C плюс 4 файла в B) и т. д. рекурсивно снизу вверх с учетом родственных папок и т. д.
В приведенном выше примере я ожидаю результатов ниже (уведомление 3 — это дочерняя папка без файлов в ней):
parent_id FilesCounter
3 0
2 2
1 3
Я предпочитаю SQL-запрос для производительности, но функция также возможна.
Я пытался смешивать иерархический запрос с накопительным пакетом (sql 2008 r2) пока безуспешно.
Пожалуйста, порекомендуйте.