Ich habe eine Tabelle mit Daten gespeichert hierarchicaly Adjazenzliste mit wie im folgenden Beispielrekursive Summe in Abfrage
id account parent 1 root null 2 a1 1 3 b1 1 4 a2 2 5 a3 4 6 a4 2 7 b2 3
und einem Tisch, wo ich Werte halten für diese Konten
id_account value 2 10 2 10 4 20 5 30 6 10
Ich machte ein Funktion, die alle Kinderkonto gibt ein Hauptkonto angegeben:
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;
}
Was ich versuche ist zu tun Funktion, die nicht nur Kinderkonten zurückgibt, sondern auch die Summe aller Werte einschließlich Kinder jedes Ergebnisses. Zum Beispiel
getChildrenAccount(4)
Würde eines Array mit folgenden Syntax zurückgeben
array(1) { [0]=> array(3) { ["id"]=> 5 ["account"]=> "a3" ["sum"]=> 50 //a2 + a3 }
Und
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 }
ich glaube, ich in meiner während Aussage eine Art von Rekursion zu verwenden, habe aber Ich bin etwas durcheinander. Kannst du mir bitte helfen?
Dank
Ich nehme an, Ihr Code funktioniert nur mit einer Verschachtelungsebene, aber ich brauche etwas, das für mehr als eine Ebene funktioniert. –