基本的な検索スクリプトをセットアップしようとしています。検索を高速化するために、現在の mysql テーブルから一時テーブルにデータを挿入することが提案されました。
これまでに得たコードは次のとおりです。
$temp = 'search_' . date('YmdHis'); // name your temp table
$sql = "CREATE TEMPORARY TABLE IF NOT EXISTS {$temp} (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Model` varchar(255) default NULL,
`Make` varchar(255) default NULL,
`Year` varchar(255) default NULL,
`Loc.` varchar(255) default NULL,
`Sale Price` varchar(255) default NULL,
`Serial No.` varchar(255) default NULL,
`Stock No.` varchar(255) default NULL,
`Tag No.` varchar(255) default NULL,
`Comments` varchar(255) default NULL,
`Description` varchar(255) default NULL,
FULLTEXT KEY `Model` (`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description`)
)";
$sql .= "INSERT INTO $temp (
id,
Model,
Make,
Year,
`Loc.`,
`Sale Price`,
`Serial No.`,
`Tag No.`,
Comments,
Description
)
(
(SELECT null,`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description` FROM ag_auger_and_grain_handling WHERE Status='IN' or Status='OF'
UNION ALL
SELECT null,`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description` FROM ag_combine WHERE Status='IN' or Status='OF'
UNION
SELECT null,`Model`,`Make`,`Year`,`Loc.`,`Sale Price`,`Serial No.`,`Stock No.`,`Tag No.`,`Comments`,`Description` FROM ag_tractor WHERE Status='IN' or Status='OF')
)
)";
?>
これが私が受け取っているエラーです:
クエリを実行できませんでした: SQL 構文にエラーがあります。14 行目の 'INSERT INTO search_20121215094411 ( id, Model, Make, Year,
Loc.
, `'付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください
型にはまらない列名 (Loc.、Sale Price など) と関係があるとしか思えません。これらは以前のプログラマーによって設定されたものであり、私が変更することはできません。