问题
i'm trying to do a spatial query in sql 2008 -> for a given list of POI's (point of interest, long/lat GEOGRAPHY
data), which postcodes do they exist in (multipolygon GEOGRAPHY
data).
So this is the query i tried, but it's syntactically incorrect:-
SELECT PostCodeId, ShapeFile
FROM Postcodes a
WHERE a.ShapeFile.STIntersects(
SELECT PointOfInterest
FROM PointOfInterests
WHERE PointOfInterestId IN (SELECT Item from dbo.fnSplit(@PoiIdList, ','))
So this means i pass in a csv list of POI Id's and split them. That's not a problem .. it's my subquery in the STIntersects
. That's invalid.
So .. any suggestions folks?
回答1:
How about:
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
来源:https://stackoverflow.com/questions/498353/how-can-i-do-this-spatial-query-in-sql-2008