Maison >base de données >tutoriel mysql >Comment puis-je trouver la latitude et la longitude les plus proches dans une base de données à l'aide de SQL ?
Utilisez une requête SQL pour localiser la latitude et la longitude les plus proches
Lors de la récupération de données à partir d'une base de données, vous devez souvent trouver l'enregistrement de latitude et de longitude le plus proche d'un point donné. Ceci est particulièrement utile dans des scénarios tels que la recherche d’entreprises, d’attractions ou d’autres points d’intérêt à proximité.
Points de requête
Pour effectuer cette tâche, vous avez besoin d'une requête SQL capable de calculer la distance entre deux points en fonction de leur latitude et de leur longitude. Il s'agit d'utiliser la formule de Haversine qui prend en compte la courbure de la Terre. De plus, vous devez spécifier la distance maximale autorisée pour récupérer les enregistrements.
Structure des requêtes SQL
La requête SQL suivante répond à ces exigences :
<code class="language-sql">SELECT latitude, longitude, SQRT( POW(69.1 * (latitude - [startlat]), 2) + POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance FROM TableName HAVING distance < [max_distance] ORDER BY distance;</code>
[startlat]
et [startlng]
représentent la latitude et la longitude du point de départ. [max_distance]
Spécifie la distance maximale à laquelle les enregistrements doivent être récupérés. Description :
Cette requête utilise la formule Haversine pour calculer la distance entre la latitude et la longitude de chaque enregistrement et le point de départ donné. La colonne "distance" stocke la distance résultante. Les enregistrements dont la distance est inférieure à la distance maximale spécifiée sont ensuite sélectionnés et triés en fonction de leur distance par rapport au point de départ.
En utilisant cette requête, vous pouvez trouver efficacement l'enregistrement de latitude et de longitude le plus proche d'un point donné, en tenant compte des contraintes de distance.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!