Comment puis-je faire cette requête spatiale dans SQL 2008?
-
20-08-2019 - |
Question
j'essaie de faire une requête spatiale dans SQL 2008 - > pour une liste donnée de points d'intérêt (points d'intérêt, données long / lat GEOGRAPHY
), dans quels codes postaux existent-ils (données multipolygones STIntersects
).
Donc, voici la requête que j'ai essayée, mais sa syntaxe est incorrecte: -
SELECT PostCodeId, ShapeFile
FROM Postcodes a
WHERE a.ShapeFile.STIntersects(
SELECT PointOfInterest
FROM PointOfInterests
WHERE PointOfInterestId IN (SELECT Item from dbo.fnSplit(@PoiIdList, ','))
Cela signifie donc que je passe une liste CSV des identifiants de points d'intérêt et les scinde . Ce n'est pas un problème .. c'est ma sous-requête dans le <=>. C'est invalide.
Alors ... avez-vous des suggestions?
La solution
Que diriez-vous de:
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow