and inside the loop call the subroutine. sub db_query is just a simple query wrapper.
# loop thru the categories and count all prods underneath my $prodcount=0; my $cat_loop_q = "SELECT category_code,category_parent FROM $categories"; my $sth = &db_query($cat_loop_q); while (my $ref = $sth->fetchrow_arrayref) { $prodcount = &countTree($$ref[0]); my $update_q = "UPDATE $categories SET count = '$prodcount' WHERE category_code = '$$ref[0]'"; my $update = &db_query($update_q); $prodcount=0; } sub countTree { my ($root) = shift; my $drill_q = "SELECT category_code FROM $categories WHERE category_parent = '$root'"; #print "$drill_q\n"; my $sth = &db_query($drill_q); my $rc = $sth->rows; if ($rc>0) { while (my $ref = $sth->fetchrow_arrayref) { &countTree($$ref[0]); } } my $sql_q = "SELECT a.category_name, a.category_code, a.category_parent, COUNT(DISTINCT b.skuid) FROM $categories AS a, $products_to_categories AS b WHERE a.category_code=b.category_code AND a.category_code='$root' GROUP BY a.id"; my $sth = &db_query($sql_q); my ($name,$parent,$code,$count); while (my $ref = $sth->fetchrow_arrayref) { $name=$$ref[0]; $code=$$ref[1]; $parent=$$ref[2]; $count=$$ref[3]; $prodcount=$prodcount+$count; } return($prodcount); }
No comments:
Post a Comment