一部のコンテンツを別のtable1
とマージしようとしています。で次のクエリを実行しています。table2
table3
PostgreSQL
CREATE TABLE table3 AS SELECT
table1.orig_zon AS orig_zon,
table1.dest_zon AS dest_zon,
table1.same_zon AS same_zon,
table1.adjacent AS adjacent,
table1.distance AS distance,
table1.da_ivtt AS da_ivtt1,
table1.da_ovtt AS da_ovtt1,
table1.tr_avail AS tr_avail1,
table1.tr_ivtt AS tr_ivtt1,
table1.tr_ovtt AS tr_ovtt1,
table1.tr_cost AS tr_cost1,
table1.au_cost AS au_cost1,
table1.sr_ivtt AS sr_ivtt1,
table1.sr_cost AS sr_cost1,
table2.da_ivtt AS da_ivtt2,
table2.da_ovtt AS da_ovtt2,
table2.tr_avail AS tr_avail2,
table2.tr_ivtt AS tr_ivtt2,
table2.tr_ovtt AS tr_ovtt2,
table2.tr_cost AS tr_cost2,
table2.au_cost AS au_cost2,
table2.sr_ivtt AS sr_ivtt2,
table2.sr_cost AS sr_cost2,
FROM table1, table2
WHERE ((table1.orig_zon = table2.orig_zon)) AND ((table1.dest_zon = table2.dest_zon));
非常に小さなダミー データセットに対してクエリをテストしましたが、結果は期待どおりです。ただし、実際のデータベースは入ってSQLite
おり、Linux シェル経由で sqlite3 でこれを実行すると、次のようなエラーが発生します。
Error: near "table1": syntax error
これを SQLite で機能させるために必要な変更を教えてもらえますか? 助けてくれてありがとう!
Edit1 : 末尾のコンマを削除した後 (以下の Craig のコメントを参照)、問題は解決しません。
Edit2:少し遊んだ後、修正が見つかりました。非常にばかげているように見えますが、クエリの内容を 1 行で渡すと、ステートメントは機能します。
table2.sr_ivtt AS sr_ivtt2,
table2.sr_cost AS sr_cost2 FROM table1, table2 WHERE ((table1.orig_zon = table2.orig_zon)) AND ((table1.dest_zon = table2.dest_zon));
おー!タイプキャスティングの災い!!