Mam tabeli danych, który wygląda tak:Jak rekurencyjnie Podsumowując hierarchii rodzic/dziecko
UnitID UnitParentID ScoreCount ScoreSum Level
7112 72 292 1
7120 7112 72 308 2
7139 7112 24 82 2
7150 7112 166 586 2
23682 7112 104 414 2
7100 7112 272 1016 2
23691 7112 94 300 2
23696 7112 24 80 2
23700 23696 184 594 3
23694 23691 24 64 3
23689 7120 88 390 3
7148 23696 112 420 3
7126 7120 32 132 3
7094 7120 96 332 3
7098 7094 64 240 4
23687 7094 16 62 4
Jakie szukam zrobić to rekursywnie dodać hierarchii od najniższej do najwyższej więc, że numery poniżej rzuć się na rodzica. Tak więc rodzic dodawałby do swoich istniejących wartości dowolne potomstwo, podnosząc drzewo do góry.
W tym przykładzie dwa ostatnie wiersze pozostaną niezmienione, ponieważ nie mają dzieci. Identyfikator jednostki 7094 miałby licznik 96 (baza) + 64 + 16 (2 dzieci) dla nowej sumy 176 (i tej samej logiki dla scoreum). Pozostali na poziomie 3 pozostaną bez zmian, ponieważ nie mają dzieci. Uważam, że muszę zacząć od dołu, aby powyższe warstwy miały prawidłowe wartości dla wszystkich dzieci.
Jeśli ktoś mógłby wskazać mi dobre źródło, w którym mogłem się dowiedzieć, jak to osiągnąć, byłbym bardzo wdzięczny.
Można użyć rekurencyjnej CTE –
Posta się przykładowe wyjście – Matt
pierwsza odpowiedź na pytanie I oznaczone jako duplikat powinien pracować dla Ciebie. Nie będę zamieszczał rozwiązania jako odpowiedzi, ponieważ dostosowałem ją z połączonego stanowiska, ale w każdym razie: dostosowałem do twojego stołu i danych jako działające rozwiązanie: http://www.sqlfiddle.com/#!6/71409/1 – jpw