1

一部のコンテンツを別のtable1とマージしようとしています。で次のクエリを実行しています。table2table3PostgreSQL

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));

おー!タイプキャスティングの災い!!

4

2 に答える 2

3

SELECTSQL では、リストの末尾にカンマを使用できません。

table2.sr_cost AS sr_cost2,
FROM table1, table2

次のようにする必要があります。

table2.sr_cost AS sr_cost2
FROM table1, table2
于 2012-10-06T08:15:32.650 に答える
1

余分なコンマを削除する必要があります

table2.sr_ivtt AS sr_ivtt2,
table2.sr_cost AS sr_cost2
FROM table1, table2
于 2012-10-06T08:14:10.777 に答える