2010-06-16 58 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; 

如果仍然不清楚,请发布您的完整表格定义和更多关于您正在尝试执行的操作的详细信息。