次の例のように、隣接リストを使用してデータが階層的に格納されたテーブルがあります
idアカウントの親 1 ルートヌル 2 a1 1 3 b1 1 4 a2 2 5 a3 4 6 a4 2 7 b2 3
そして、これらのアカウントの値を保持するテーブル
id_account 値 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)
次の構文で配列を返します
配列(1) {
[0]=>配列(3) {
["ID"]=> 5
["アカウント"]=> "a3"
["合計"]=> 50 //a2 + a3
}
と
getChildrenAccount(2)
配列(2) {
[0]=>配列(3) {
["id"]=> 4
["アカウント"]=> "a2"
["合計"]=> 70 //a1 + a2 + a3
[1]=>配列(3) {
["ID"]=> 6
["アカウント"]=> "a4"
["合計"]=> 30 //a1 + a4
}
while ステートメントで何らかの再帰を使用する必要があると思いますが、少し混乱しています。助けてください。
ありがとう