2016-05-04 6 views
0

Ich versuche eine räumliche Ansicht in PosGIS 2.1.2 von node.js zu erstellen. Ich habe versucht mit Knex (0.7.6) und mit Pg (4.3.0), aber jedes Mal, wenn ich die Abfrage ausführen, wird eine Tabelle in der Datenbank statt einer Ansicht erstellt.CREATE VIEW in PostGIS von node.js ergibt eine Tabelle

Dies wird die SQL-Anweisung Ich verwende:

CREATE VIEW my_view AS 
    SELECT DISTINCT a.* 
    FROM layer_1 AS a, layer_2 AS b 
    WHERE ST_DWithin(a.geom, b.geom, 10); 

Was mache ich falsch?

Der Grund, warum ich eine Ansicht erstellen möchte, ist, dass my_view immer dann aktualisiert wird, wenn layer_1 oder layer_2 geändert wird.

EDIT

Bitte diese Frage verwerfen! Ich habe festgestellt, dass das Problem nicht so ist, wie ich oben beschrieben habe. Das Problem war, dass ich zuerst eine CREATE TABLE Abfrage verwendet und dann in eine CREATE VIEW Abfrage geändert hatte, aber der Code wurde nicht richtig auf dem Server aktualisiert.

+0

Welcher Beweis, dass es eine Tabelle ist, die erstellt wird? – e4c5

+0

@ e4c5 Die Abfrageergebnisse sind unter "INFORMATION_SCHEMA.tables" nicht unter "INFORMATION_SCHEMA.views" aufgeführt. Wenn ich die Abfrage direkt in der DB ausführe, werden die Ergebnisse in'INFORMATION_SCHEMA.views' aufgelistet. – Anas

+0

Danke Beweis genug! – e4c5

Antwort

0

Try this:

 

    CREATE VIEW my_view AS (
    SELECT DISTINCT 
     a.* 
    FROM layer_1 a 
    JOIN layer_2 b 
    ON st_DWithin(a.geom, b.geom, 10) 
    ); 

Geometrie verwenden, you'ld besser ein INNER JOIN statt einer WHERE verwenden.

+0

entspricht dies nicht der ursprünglichen Abfrage, da die ursprüngliche Abfrage eine implizite Verknüpfung ist? – e4c5

+0

Danke! Ich bin müde, aber das Problem bleibt bestehen. – Anas