2011-10-05 59 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(...))」,因爲這將加快查詢。