2017-04-07 59 views
-2

为什么我的后续子例程抛出每个派生表都必须有自己的别名错误?每个派生表都必须有它自己的别名Error?

sub ok_wait 
{ 
my $str= shift; 
$DBH = &connect or die "Cannot connect to the sql server \n"; 
$DBH->do("USE $str;"); 
my $stmt="select name,jobs_ok,jobs_wait from (select name,jobs_ok,jobs_wait from files order by name limit 5) t union all select 'others',sum(jobs_wait)as jobs_wait,sum(jobs_ok)as jobs_ok from(select jobs_wait,jobs_ok from files order by name limit -1 offset 5) t;"; 
my $sth = $DBH->prepare($stmt); 
$sth->execute() or die $sth->errstr; 
my $tmp = 0; 
while(my @row_array=$sth->fetchrow_array) 
{ 
if ($tmp == 0) { 
$var_ok .= "\[\"$row_array[0] \($row_array[2]\)\",$row_array[2]\]"; 
$var_wait .= "\[\"$row_array[0] \($row_array[1]\)\",$row_array[1]\]"; 
$tmp++; 
} 
$sth->finish; 
$DBH->disconnect(); 
} 
+0

也许是因为你有派生表没有别名? – billynoah

+0

上述更改显示语法错误@ billynoah – SRVVANI

+0

您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,选择正确的语法以在'from(选择jobs_wait,jobs_ok中的文件order by name limit -1')附近使用@billynoah – SRVVANI

回答

0

改变了限值

"select name,jobs_ok,jobs_wait from ((select name,jobs_ok,jobs_wait from files order by name limit 5) union all (select 'others',sum(jobs_wait)as jobs_wait,sum(jobs_ok) as jobs_ok from (select jobs_wait,jobs_ok from files order by name limit 0 offset 5) foo)) foo "; 

注:未测试我刚才输入在这里直接,但基本上你需要把一个别名到您的子查询。

+0

显示语法错误。 – SRVVANI

+0

对不起,我将保留GurV,但语法错误可能缺少括号 – Learning

+0

您的SQL语法错误;请查看与您的MySQL服务器版本相对应的手册,以找到正确的语法以便在'from(从文件中选择jobs_wait,jobs_ok姓名限制-1'@学习 – SRVVANI

相关问题