#!perl use strict; use DBI; my $DBH; my $data1; my $data2; datas('dbname'); print "$data1\n$data2"; sub datas { $data1 = ""; $data2 = ""; my $str = shift; $DBH = &connect or die "Cannot connect to the sql server \n"; $DBH->do("USE $str;"); my $stmt=" ( select name,data1 from datas order by data1 desc limit 5 ) union all ( select 'added' ,sum(data1) from ( select data1 from datas order by data1 desc limit 18446744073709551615 offset 5 ) t1 ) union all ( select name,data2 from datas order by data2 desc limit 5 ) union all ( select 'added' ,sum(data2) from ( select data2 from datas order by data2 desc limit 18446744073709551615 offset 5 ) t1 )"; my $sth = $DBH->prepare( $stmt ); $sth->execute() or die $sth->errstr; my $tmp = 0; while(my @row_array=$sth->fetchrow_array) { if ($tmp > 5){ if ($tmp == 6 ) { $data2 = "\[\"$row_array[0] \($row_array[1]\)\",$row_array[1]\]"; } else { $data2 .= ",\[\"$row_array[0] \($row_array[1]\)\",$row_array[1]\]"; } } else { if ($tmp == 0 ) { $data1 = "\[\"$row_array[0] \($row_array[1]\)\",$row_array[1]\]"; } else { $data1 .= ",\[\"$row_array[0] \($row_array[1]\)\",$row_array[1]\]"; } } ++$tmp; } $sth->finish; $DBH->disconnect(); }