autoJoinLocation(); $id->selectAdd(); $id->selectAdd('distinct(invdetail_location_id) as location_id, join_location.location_name as location_name'); $locs = $id->fetchAll('location_id', 'location_name'); $id->free(); foreach($locs as $loc=>$name) { $id = DB_DataObject::Factory('invdetail'); $id->autoJoin(); $id->invdetail_location_id = $loc; $id->selectAdd(); $id->selectAdd('distinct(join_invhist.invhist_itemsite_id) as itemsite_id'); $is = $id->fetchAll('itemsite_id'); $id->free(); $tot = count($is); $mu = memory_get_usage(); echo "Processing $name ({$tot}) - memory $mu\n"; foreach($is as $n=>$itemsite) { $id = DB_DataObject::Factory('invdetail'); $id->query("SELECT invfifo_fill_all($loc, $itemsite)"); $id->free(); if (!($n % 50)) { echo "$n/$tot\n"; } } } die("DONE"); } }