Datenbank nach Ergebnissen innerhalb von Radiusüberlappungen abfragen
Problem:
In einer Datenbank mit geografischen Daten möchten Sie Ergebnisse auswählen, die mehrere kreisförmige Markierungen mit angegebenen Radien teilweise überlappen. Eine vorhandene SQL-Abfrage identifiziert Ergebnisse, die mehrere Markierungen überlappen, nicht genau.
Lösung:
Für präzise Ergebnisse kann die folgende SQL-Anweisung verwendet werden:
<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>
Erklärung:
Diese Abfrage verwendet die Gleichung eines Kreises, um zu bestimmen, ob ein gegebener Punkt (von BenutzerA) in den Radius eines Kreises (definiert durch den Breitengrad und) fällt Längengrad eines Radius von BenutzerB). Die folgenden Schritte sind erforderlich:
Mit dieser Abfrage können Sie Ergebnisse genau identifizieren, die mehrere kreisförmige Markierungen überlappen, selbst wenn sich die Kreise berühren.
Das obige ist der detaillierte Inhalt vonWie frage ich eine Datenbank nach Ergebnissen ab, die mehrere kreisförmige Markierungen mit bestimmten Radien überlappen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!