Как я могу сделать этот Пространственный Запрос в Sql 2008? - PullRequest
3 голосов
/ 31 января 2009

Я пытаюсь выполнить пространственный запрос в SQL 2008 -> для данного списка POI (точки интереса, данные long / lat GEOGRAPHY), в каких почтовых индексах они существуют (данные мультиполигона 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 список идентификаторов POI и разделяю их . Это не проблема ... это мой подзапрос в STIntersects. Это неверно.

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

1 Ответ

4 голосов
/ 31 января 2009

Как насчет:

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
...