Как собрать два запроса? - PullRequest
1 голос
/ 16 июня 2010

В названии это то, что мне нужно.

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_exp и является ли правильным решением или будет лучше использовать ST_DWithin или ST_buffer?

1 Ответ

1 голос
/ 27 июля 2010

Вы не можете объединить два оператора 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;

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

...