Med hensyn til dine 'redigeringer' er det ikke ofte, du ser et spørgsmål, der inkluderer "giv venligst ikke...". Sikkert hver lille smule hjælper? Især fordi du faktisk ikke har vist os, hvad du gør kender til STContains
eller STIntersects
(eller Filter()
for den sags skyld)...
I hvert fald havde jeg en database med postnumre og butiksplaceringer ved hånden, så jeg omdøbte tabellerne/kolonnerne til at matche dine (jeg har så 6.535 CrimeLocatoins og 3.285 GeoShapes). Jeg formoder, at du har fundet ud af det nu - men en anden vil måske finde dette nyttigt...
Følgende forespørgsel returnerer antallet af CrimeLocations i hver GeoShapes.ShapeFile
SELECT G.Name, COUNT(CL.Id)
FROM GeoShapes G
INNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) = 1
GROUP BY G.Name
ORDER BY 2 DESC
Det tager aldre (som 20 minutter), fordi jeg ikke har opsat nogen geospatiale indekser, og mine ShapeFiles har et højt antal point, men det kører med succes. Hvis jeg ville begrænse resultaterne, som du foreslår:
SELECT G.Name, COUNT(CL.Id)
FROM GeoShapes G
INNER JOIN CrimeLocations CL ON G.ShapeFile.STIntersects(CL.LatLong) = 1
GROUP BY G.Name
HAVING COUNT(CL.Id) = 500
Selvfølgelig ønsker du ikke at hardkode tallet 500 - så du kan tilføje en COUNT(*) FROM CrimeLocations
underforespørgsel der, eller en variabel med totalen fra en separat forespørgsel.
Er det komplekst nok?