Rumah  >  Artikel  >  pangkalan data  >  Cara Mendapatkan Keputusan Dalam Jejari Penanda daripada Pangkalan Data: Pendekatan SQL untuk Pengiraan Jarak Tepat

Cara Mendapatkan Keputusan Dalam Jejari Penanda daripada Pangkalan Data: Pendekatan SQL untuk Pengiraan Jarak Tepat

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 05:40:02335semak imbas

How to Retrieve Results Within a Marker Radius from a Database: A SQL Approach to Accurate Distance Calculation

Cara Mendapatkan Keputusan dalam Jejari Penanda daripada Pangkalan Data: Pengiraan Jarak Tepat

Untuk menentukan dengan tepat keputusan yang termasuk dalam jejari penanda yang ditentukan daripada pangkalan data, adalah penting untuk mempertimbangkan persamaan bulatan:

(x-x1)^2 + (y - y1)^2 = r^2

di mana (x,y) mewakili titik dalam bulatan, (x1, y1) ialah pusat bulatan dan r ialah jejarinya .

Dalam konteks soalan ini, pusat bulatan ialah lokasi penanda pengguna (latitud dan longitud), manakala padanan atau keputusan yang berpotensi diwakili oleh titik dalam bulatan. Jejari ditetapkan kepada 1 kilometer.

Untuk menangani isu unit yang berbeza (darjah untuk latitud dan longitud berbanding kilometer untuk jejari), persamaan diubah suai seperti berikut:

((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4 (where 2 is the radius in kilometers and 111.12 represents the conversion factor from degrees to kilometers)

Berdasarkan persamaan ini, pernyataan SQL untuk mendapatkan hasil yang bersilang dengan bulatan penanda boleh ditulis sebagai:

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, 2)) <= 4

Atas ialah kandungan terperinci Cara Mendapatkan Keputusan Dalam Jejari Penanda daripada Pangkalan Data: Pendekatan SQL untuk Pengiraan Jarak Tepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn