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

Первый результат запроса является все точки внутри многоугольника, и отдельно от нее в течение 5 мин, где этот полигон имеет GID = 2. Но я также хочу отобразить этот многоугольник. Я попытался написать в первом запросе

... AS SELECT t2.name,t2.the_geom2,t1.the_geom1,t1.label ... но есть только точка без полигона ...

Этого вопрос связан с уже задаваемым вопросом «Как найти все точки от некоторого многоугольника? ». Но не получилось, поэтому, пожалуйста ...

И это решение ST_expand ok, или лучше использовать 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; 

Если это еще не ясно, разместите свои полные определения таблиц и более подробную информацию о том, что вы пытаетесь сделать.

Смежные вопросы