2011-10-05 27 views
7

我有2个表,其中一个点作为地理位置,另一个与多边形作为地理位置。我能找到它的多边形单点落在(从点表)由以下查询:SQL空间加入

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; 

然而,我想要做的两个表之间的连接,并获得多边形,其中每个积分表下降。它甚至有可能吗?或者,我是否需要遍历Point表并多次调用上述查询?

回答

12

这应该工作:

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 

我添加索引提示 “WITH(INDEX(...))”,因为这将加快查询。