Мне нужно добавить сумму дочерних элементов в родительский элемент. Детский элемент childId 'аналогичен родительскому элементу' parentId '.Sql Сумма дочерних элементов
В приведенной ниже таблице ParentId '45627' имеет общее количество 0. Но мне нужно, как 11. 11 - сумма детальных предметов totalcount.
+----------+---------+-------+------------+
| ParentId | ChildId | Name | TotalCount |
+----------+---------+-------+------------+
| 45627 | 12568 | Test1 | 0 |
| 52678 | 45627 | Test2 | 0 |
| 23123 | 45627 | Test3 | 7 |
| 54312 | 45627 | Test4 | 3 |
| 32123 | 45627 | Test5 | 0 |
| 12111 | 45627 | Test6 | 1 |
| 32122 | 45627 | Test7 | 0 |
| 43123 | 45627 | Test8 | 0 |
+----------+---------+-------+------------+
Ожидаемый результат:
+----------+---------+-------+------------+
| ParentId | ChildId | Name | TotalCount |
+----------+---------+-------+------------+
| 45627 | 12568 | Test1 | 11 |
| 52678 | 45627 | Test2 | 0 |
| 23123 | 45627 | Test3 | 7 |
| 54312 | 45627 | Test4 | 3 |
| 32123 | 45627 | Test5 | 0 |
| 12111 | 45627 | Test6 | 1 |
| 32122 | 45627 | Test7 | 0 |
| 43123 | 45627 | Test8 | 0 |
+----------+---------+-------+------------+
Хотя я в состоянии достигнуть с автообъединением но производительность слишком медленно.
Есть ли другой способ получить ожидаемый результат с лучшей производительностью.
Запросов Я попытался
SELECT a.parentId
,a.childId
,out1.TotalCount
FROM test a
LEFT JOIN (
SELECT a.parentId
,sum(b.TotalCount) AS TotalCount
FROM test a
INNER JOIN test b ON a.ParentId = b.childId
GROUP BY a.ParentId
) AS out1 ON a.ParentId = out1.ParentId
Примечание: В приведенных выше таблицах приведены примеры. Количество записей может составлять 10 000.
Извините за плохую разметку.
Показать, что вы попробовали. Таким образом, мы можем предоставить вам другие варианты, а не повторять те, которые вы уже пробовали. –
хотел его только для SQL-SERVER, или любая РСУБД будет делать? –
Я думаю, что у вас есть обратная сторона ChildID и ParentID? 45627 выглядит как родитель всех этих детей. Но мы можем дождаться результата dna. –