## Bagaimana untuk Membuat Pertanyaan dengan Tepat untuk Baris MySQL Dalam Jejari Batu Ditentukan?

Patricia Arquette
Lepaskan: 2024-10-26 12:33:03
asal
680 orang telah melayarinya

## How to Accurately Query for MySQL Rows Within a Specified Mile Radius?

MySQL Longitud dan Pertanyaan Latitud untuk Baris Dalam Radius X Batu

Dalam pangkalan data besar yang mengandungi data geospatial, selalunya perlu untuk mendapatkan semula baris yang berada dalam radius tertentu lokasi tertentu. Ini biasanya dicapai menggunakan geometri sfera untuk mengira jarak antara dua titik pada sfera.

Satu pertanyaan sedemikian untuk mencari baris dalam radius 25 batu dari titik tengah mengembalikan beberapa hasil yang tidak tepat, dengan jarak antara 86 hingga 800 batu dari sasaran. Berikut ialah pertanyaan asal:

<code class="sql">SELECT *,(((acos(sin(($lat*pi()/180)) * sin((`latitude`*pi()/180))+cos(($lat*pi()/180))
* cos((`latitude`*pi()/180)) * cos((($lon - `longitude`)*pi()/180))))*180/pi())*60*1.1515)
AS `distance` FROM `geo_locations` HAVING `distance` < 25 ORDER BY `distance` ASC</code>
Salin selepas log masuk

Untuk menangani isu ini, mari kita ubah suai pertanyaan berdasarkan penyelesaian yang telah berjaya dilaksanakan dalam aplikasi pencari kedai:

<code class="sql">SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( :lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( :long )
            ) +
            sin(radians(:lat)) *
            sin(radians(`lat`))
        )
    ) `distance`
FROM
    `location`
HAVING
    `distance` < :distance
ORDER BY
    `distance`
LIMIT
    25</code>
Salin selepas log masuk

Dalam semakan ini pertanyaan:

  • :lat dan :long mewakili latitud dan longitud titik tengah yang dilalui sebagai parameter.
  • lat dan panjang ialah nilai latitud dan longitud yang disimpan dalam pangkalan data.
  • :jarak ialah parameter jarak yang ditentukan pengguna yang dihantar kepada pertanyaan.
  • 6371 ialah jejari bumi dalam batu.

Dengan menggunakan pertanyaan yang dikemas kini ini, anda boleh dapatkan semula baris dengan berkesan dalam radius batu yang ditentukan di sekitar lokasi pusat tertentu.

Atas ialah kandungan terperinci ## Bagaimana untuk Membuat Pertanyaan dengan Tepat untuk Baris MySQL Dalam Jejari Batu Ditentukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan