J'ai une liste de magasins chaque magasin a des données comme adresse de la rue, longitude, latitude.Comment puis-je interroger la base de données SQL Server pour le magasin le plus proche dans le voisinage d'un visiteur?
Maintenant, lorsqu'un utilisateur visite mon site, je veux lui montrer/elle tous les magasins disponibles dans leur quartier (au sein des radios 10 miles « le plus proche à la plus éloignée »)
Voici ce que je l'ai fait. Je crée une nouvelle colonne appelée StPoint
avec le type geography
. J'ai utilisé la fonction geography::Point(latitude, longitude, 4326)
pour convertir la longitude/latitude de chaque magasin à un point comme si
UPDATE stores
SET StPoint = CASE WHEN latitude IS NOT NULL AND longitude IS NOT NULL
THEN geography::Point(latitude, longitude, 4326)
ELSE NULL END
J'ai essayé de trouver la distance entre le point actuel du visiteur et tous les magasins comme si
SELECT
CASE WHEN StPoint IS NOT NULL THEN StPoint.STIntersection(geography::Point(42.2974416, -71.4478897, 4326)).STAsText() ELSE NULL END AS distance
FROM stores
mais cela me donne quelque chose comme
GEOMETRYCOLLECTION VIDES
ou quelque chose comme ça
POINT (-99,4478897 56,2974416)
Enfin, j'ai essayé d'utiliser la fonction STDistance
qui renvoie une valeur (je ne suis pas sûr de ce que l'unité est utilisée ici)
SELECT StPoint.STDistance(geography::Point(42.2974416, -71.4478897, 4326))
FROM stores
Voici échantillon de ce que la requête ci-dessus montre
27376.5070395886
3973.49722397033
27620.9636451663
50346.8940144233
7425.98548351235
34193.3513625182
Comme vous pouvez le voir, les résultats ne sont pas en miles. Comment puis-je obtenir correctement le magasin le plus proche avec quelle distance forme le visiteur de chaque magasin?
'suivante Comme vous pouvez le voir, le résultat est en miles . »- Mais vous ne nous montrez pas les résultats;) – MatBailie
Désolé j'ai oublié de coller cela. J'ai mis à jour la question. – Jaylen