2011-10-05 21 views
7

Tengo 2 tablas, una con puntos como geografías y otra con polígonos como geografías. Soy capaz de encontrar qué polígono se queda un solo punto (de la tabla de puntos) por la siguiente consulta:SQL Spatial Join

DECLARE @p geography; 
select @p = PointGeom from dbo.PointTable where ID = 1 
SELECT a.ID, ATTRIBUTE1, geom 
from dbo.PolygonTable a 
where geom.STIntersects(@p) = 1; 

Sin embargo, quiero hacer una unión entre las dos tablas y obtener los polígonos en los que cada una de las puntos en la tabla de puntos caen. ¿Es posible? ¿O necesito pasar por la tabla de puntos y llamar a la consulta anterior varias veces?

Respuesta

12

Esto debería funcionar:

SELECT 
    polyTable.[PolygonID] 
, pointTable.[PointID] 
FROM 
[PolygonTable_Name] polyTable WITH(INDEX([SPATIAL_INDEX_NAME])) 
INNER JOIN 
[PointTabl_Name] pointTable 
ON 
polyTable.Geog.STIntersects(pointTable.Geog) = 1 

He añadido una sugerencia de índice "CON (INDICE (...))" ya que esto acelerará la consulta.