my $dbh = $DB->getDatabaseHandle(); my $nodeids = $dbh->selectcol_arrayref("SELECT DISTINCT vote_id FROM vote"); my $uph = $dbh->prepare("SELECT COUNT(*) FROM vote WHERE vote_id=? AND weight > 0"); my $dnh = $dbh->prepare("SELECT COUNT(*) FROM vote WHERE vote_id=? AND weight < 0"); my @cnodes = (); NODEID: while ( @$nodeids ) { for ( 1 .. 100 ) { if ( my $nodeid = shift @nodeids ) { $uph->execute( $nodeid ); $dnh->execute( $nodeid ); my ($upvotes) = $uph->fetchrow_array; my ($downvotes) = $dnh->fetchrow_array; push @cnodes, [ $nodeid, ( $upvotes < $downvotes ) ? $upvotes : $downvotes ]; } else { last NODEID; } } trim( \@cnodes ); } trim( \@cnodes ); # display @cnodes ############### sub trim { my ( $cnodes ) = @_; @$cnodes = sort { $a->[1] <=> $b->[1] } @$cnodes; shift @$cnodes while @$cnodes > 30; }