Дерево неограниченной глубины. пример:postgresql подсчитывает количество детей
+----+-------+--------------------+
| id | name | parent_id | value |
+----+-------+--------------------+
| 1 | test1 | | 0 |
| 2 | test2 | 1 | 0 |
| 3 | test3 | 2 | 5 |
| 4 | test4 | 1 | 0 |
| 5 | test5 | 4 | 5 |
| 6 | test6 | 4 | 0 |
| 7 | test7 | 6 | 10 |
+----+-------+--------------------+
Я хочу получить общую стоимость своих детей. :
+----+-------+--------------------+
| id | name | parent_id | value |
+----+-------+--------------------+
| 1 | test1 | | 20 | = test2.value + test4.value
| 2 | test2 | 1 | 5 | = test3.value
| 3 | test3 | 2 | 5 |
| 4 | test4 | 1 | 15 | = test5.value + test6.value
| 5 | test5 | 4 | 5 |
| 6 | test6 | 4 | 10 | = test7.value
| 7 | test7 | 6 | 10 |
+----+-------+--------------------+
любое предложение? Благодаря!
Не зная остаток ваших потребностей, я ничего не могу окончательно о том, что правильный шаблон будет, но ваша реализация довольно наивный способ хранения деревьев в базе данных говорят. Были изобретены некоторые шаблоны дизайна, которые значительно облегчают работу со всеми умными вещами, включая вопрос, который вы задаете. Например, проверьте структуру материализованного шаблона пути. См. Http://www.rampant-books.com/book_0601_sql_coding_styles.htm или другие ссылки. –
@ hims056: Что непонятно? Следуйте ссылкам 'parent_id' и рекурсивно суммируйте значения' count'. –
@ hims056 первая таблица - это то, что у меня есть, а вторая - то, что я хочу получить, чтобы создать представление. – Danfi