2010-06-16 4 views
1

Dans le titre est ce dont j'ai besoin.Comment assembler deux requêtes?

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; 

Le premier résultat de la requête est tous les points dans le polygone et en dehors de celui-ci pendant 5min où ce polygone a gid = 2. Mais je veux aussi afficher ce polygone. J'ai essayé d'écrire dans la première requête

... AS SELECT t2.name,t2.the_geom2,t1.the_geom1,t1.label ... mais n'a obtenu que des points sans polygone ...

Cette question est liée à la question déjà posée « Comment trouver tous les points loin de certains polygone? ". Mais n'a pas eu réponse, alors s'il vous plaît ...

Et ST_expand ok solution ou il vaudra mieux utiliser ST_DWithin ou ST_buffer?

Répondre

1

Vous ne pouvez pas combiner deux instructions CREATE TABLE en une seule. Pourquoi créez-vous des tables si vous ne faites qu'interroger des données?

Il semble que ce que vous essayez vraiment de faire soit une requête qui vous donnera les points dans le polygone et le polygone lui-même. Quelque chose comme ça?

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; 

Si cela n'est toujours pas clair, postez vos définitions de table complètes et plus de détails sur ce que vous essayez de faire.