2009-01-31 7 views
3

J'essaie de faire une requête spatiale en SQL 2008 -> pour une liste donnée de POI (point d'intérêt, long/lat GEOGRAPHY données), dont les codes postaux existent-ils (multipolygon GEOGRAPHY données).Comment puis-je faire cette requête spatiale dans Sql 2008?

C'est donc la requête que j'ai essayé, mais il est syntaxiquement incorrect: -

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

Donc cela signifie que je passe dans un csv list of POI Id's and split them. Ce n'est pas un problème .. c'est ma sous-requête dans le STIntersects. C'est invalide.

Alors ... des suggestions gens?

Répondre

4

Que diriez-vous:

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

Tas merci :) Je ne savais pas u pourrait joindre les deux tables dans un STIntersects! –

+0

Ma seule question serait vraiment la performance et quelle est la meilleure façon de le faire. Et maintenant, c'est au-delà de ma compréhension (Spatial SQL est tout nouveau pour moi) –

Questions connexes