Interrogation de la base de données pour les résultats dans les chevauchements de rayon
Problème :
Dans une base de données avec données, vous souhaitez sélectionner des résultats qui chevauchent partiellement plusieurs marqueurs circulaires avec des rayons spécifiés. Une requête SQL existante n'identifie pas avec précision les résultats qui chevauchent plusieurs marqueurs.
Solution :
Pour des résultats précis, l'instruction SQL suivante peut être utilisée :
<code class="sql">SELECT A.user_id, A.radius_id, A.latitude, A.logitude FROM UserA AS A, (SELECT user_id, latitude, longitude FROM UserB WHERE user_id = 8) AS B WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12*cos(A.latitude), 2)) <= 4</code>
Explication :
Cette requête utilise l'équation d'un cercle pour déterminer si un point donné (de l'utilisateur A) se situe dans le rayon d'un cercle (défini par la latitude et longitude d'un rayon de l'utilisateur B). Les étapes suivantes sont impliquées :
En utilisant cette requête, vous pouvez identifier avec précision les résultats qui chevauchent plusieurs marqueurs circulaires, même si les cercles se touchent.
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!