У меня есть таблица с данными, хранящимися hierarchicaly с использованием списка смежности, как в следующем примереРекурсивный сумма в запросе
id account parent 1 root null 2 a1 1 3 b1 1 4 a2 2 5 a3 4 6 a4 2 7 b2 3
И стол, где я храню значения для этих счетов
id_account value 2 10 2 10 4 20 5 30 6 10
Я сделал функция, которая возвращает всю дочернюю учетную запись с учетом родительской учетной записи:
function getChildrenAccount($parent_id)
{
$query = "SELECT id, account FROM accounts WHERE parent='{$parent_id}' ORDER BY account";
$result = mysql_query($query) or die(mysql_error());
while($r[]=mysql_fetch_assoc($result));
return $r;
}
Что я пытаюсь сделать, это функция, которая возвращает не только учетные записи детей, но также и сумму всех значений, включая детей каждого результата. Например
getChildrenAccount(4)
вернуть бы массив со следующим синтаксисом
array(1) { [0]=> array(3) { ["id"]=> 5 ["account"]=> "a3" ["sum"]=> 50 //a2 + a3 }
И
getChildrenAccount(2)
array(2) { [0]=> array(3) { ["id"]=> 4 ["account"]=> "a2" ["sum"]=> 70 //a1 + a2 + a3 [1]=> array(3) { ["id"]=> 6 ["account"]=> "a4" ["sum"]=> 30 //a1 + a4 }
Я думаю, что я должен использовать какой-то рекурсии в моем в то время как заявление, но Я немного смущен. Не могли бы вы мне помочь?
Благодаря
Я предполагаю, что ваш код работает только с одним уровнем вложенности, но мне нужно что-то, что работает более чем на один уровень. –