2017-11-22 22 views
0

ソーステーブル内のすべてのポイントからエッジを保存するテーブルを8つの最近傍を使用して作成します。私はそれらを識別する関数を作成しましたが、テーブルの作成は失敗します。適切な構文は何でしょうか?クエリの結果からテーブルを作成する際にエラーが発生する

CREATE TABLE edges AS 
SELECT a.*,gid,nextval('seq') AS edge_gid, 
     ST_SetSRID(ST_MakeLine(a.centroids, b.getcentroids),4326) AS geom_line 
FROM letseenow a, (select getCentroids(gid) from letseenow) b 
WHERE b.getcentroids=a.centroids; 

ERROR: column "gid" specified more than once SQL state: 42701

答えて

0

あなたはselect文で二回名前gidを使用している:あなたがa.*、2回目の呼び出し時に一度、あなたはgidを書くとき。テーブルを作成するために結果を使用しているので、同じ名前の2つの列を作成しようとすると、結局それは許されません。

あなたはどちらかだけa.*を維持し、冗長gid呼び出しを削除するか、二番目の名前を変更することができますすることができます

CREATE TABLE edges AS 
SELECT a.*, nextval('seq') AS edge_gid, 
     ST_SetSRID(ST_MakeLine(a.centroids, b.getcentroids),4326) AS geom_line 
FROM letseenow a, (select getCentroids(gid) from letseenow) b 
WHERE b.getcentroids=a.centroids; 

または

CREATE TABLE edges AS 
SELECT a.*,gid as gid_2 ,nextval('seq') AS edge_gid, 
     ST_SetSRID(ST_MakeLine(a.centroids, b.getcentroids),4326) AS geom_line 
FROM letseenow a, (select getCentroids(gid) from letseenow) b 
WHERE b.getcentroids=a.centroids; 
関連する問題