2017-04-07 7 views
-2

なぜ私の次のサブルーチンがスローすると、すべての派生テーブルには独自のエイリアスエラーが必要ですか?私は直接それをここに入力したが、基本的に、あなたのサブクエリにエイリアスを配置する必要がテストされていない:すべての派生テーブルには独自のエイリアスが必要です。エラー?

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 from files order from 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

申し訳ありません。文法エラーの場合、かっこが足りない可能性があります。 – Learning

+0

SQL構文に誤りがあります.MySQLサーバのバージョンに対応したマニュアルをチェックし、正しい構文を使用してください(from jobs_wait、jobs_ok from files order by名前制限-1 '@Learning – SRVVANI

関連する問題