2009-01-31 66 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