2009-01-31 67 views
3

我试图做一个空间查询在SQL 2008 - >对于给定的POI列表(兴趣点,长/经纬度GEOGRAPHY数据),它们存在哪些postcode(多数据集GEOGRAPHY数据)。如何在Sql 2008中执行此空间查询?

所以这是我试过的查询,但它的语法不正确: -

SELECT PostCodeId, ShapeFile 
FROM Postcodes a 
WHERE a.ShapeFile.STIntersects(
    SELECT PointOfInterest 
    FROM PointOfInterests 
    WHERE PointOfInterestId IN (SELECT Item from dbo.fnSplit(@PoiIdList, ',')) 

因此,这意味着我传递一个csv list of POI Id's and split them。这不是问题..这是我在STIntersects的子查询。这是无效的。

所以..任何建议人?

回答

4

如何:

SELECT a.PostCodeId, a.ShapeFile 
FROM (SELECT Item from dbo.fnSplit(@PoiIdList, ',')) AS POI_IDs 
INNER JOIN PointOfInterests 
    ON PointOfInterests.PointOfInterestId = POI_IDs.Item 
INNER JOIN Postcodes a 
    ON a.ShapeFile.STIntersects(PointOfInterests.PointOfInterest) = 1 
+0

感谢堆:)我不知道ü可以连接两个表中的STIntersects! – 2009-01-31 23:44:07