2010-06-16 60 views
1

標題是我需要的。如何把兩個查詢放在一起?

CREATE TABLE newTable1 AS SELECT t2.name,t2.the_geom2 
FROM t1,t2 
WHERE ST_Contains(ST_Expand(t2.the_geom2,0.05),t1.the_geom1) 
     and t1.gid=2; 

CREATE TABLE newTable2 AS SELECT t1.the_geom,t1.label FROM t1 WHERE t1.gid=2; 

第一查詢結果是在5min內多邊形,並從它開的所有點,其中該多邊形具有GID = 2。但我也想顯示這個多邊形。我試圖在第一個查詢寫

... AS SELECT t2.name,t2.the_geom2,t1.the_geom1,t1.label ...但有沒有多邊形只分...

這個問題與已經問問題掛鉤「如何找到所有點從一些多邊形走呢? 」。但沒有得到answere,所以請...

而且是ST_expand好的解決方案,或者它會更好地使用ST_DWithin或ST_buffer?

回答

1

您不能將兩個CREATE TABLE語句組合成一個。如果您只是查詢數據,爲什麼要創建表格?

這聽起來像你真正想做的是一個查詢,會給你多邊形內的點和多邊形本身。像這樣?

SELECT 
    t1.the_geom AS polygon, t1.label AS polygon_label, 
    t2.the_geom2 AS point, t2.name AS point_name 
FROM 
    t1, t2 
WHERE 
    ST_Contains(ST_Expand(t2.the_geom2,0.05), t1.the_geom1) 
    AND t1.gid = 2; 

如果仍然不清楚,請發佈您的完整表格定義和更多關於您正在嘗試執行的操作的詳細信息。