Как я могу выполнить этот пространственный запрос в Sql 2008?

Я пытаюсь выполнить пространственный запрос в sql 2008 -> для заданного списка POI (точка интереса, данные long / lat GEOGRAPHY), в каких почтовых индексах они существуют (данные multipolygon GEOGRAPHY).

Итак, это запрос, который я пробовал, но он синтаксически неверен: -

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

Это означает, что я передаю список идентификаторов точек интереса в формате CSV и разделяю их. Это не проблема .. это мой подзапрос в STIntersects. Это неверно.

Итак .. какие-нибудь предложения, ребята?


person Pure.Krome    schedule 31.01.2009    source источник


Ответы (1)


Как насчет:

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
person Cade Roux    schedule 31.01.2009
comment
спасибо кучу :) я не знал, что вы можете объединить две таблицы в STIntersects! - person Pure.Krome; 01.02.2009
comment
Мой единственный вопрос действительно будет в производительности и как это сделать НАИЛУЧШИМ способом. И прямо сейчас это вне моего понимания (Spatial SQL для меня в новинку) - person Cade Roux; 01.02.2009