Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHP / MySQL - Tìm tất cả các mục trong bán kính 500 mét từ tọa độ gps thực tế

Tính khoảng cách giữa hai tọa độ thực ra không quá khó với công thức hasrsine.

SELECT 
  -- stuff here
  , ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance 
FROM 
  stuff
HAVING 
  distance < 500

Câu trả lời được tham chiếu

Những thay đổi cần thiết so với câu trả lời ban đầu:

  1. Hằng số được cung cấp trong câu trả lời ban đầu cung cấp các giá trị cho dặm hoặc km. Tôi đã thay đổi hằng số ở đây để làm việc với mét.

  2. Các hằng số đã thay đổi để sử dụng tọa độ của bạn. Bạn có thể muốn điều chỉnh truy vấn thêm một chút để tạo các tham số đó thay vì hằng số.

  3. having biểu thức đã thay đổi một chút để phản ánh mong muốn của bạn trong 500 mét. Một lần nữa, đây có thể là thứ bạn muốn tham số hóa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO và php - Gọi đến một hàm thành viên chuẩn bị () trên một đối tượng không phải

  2. MySQL:Sao chép bảng sang một bảng khác có thêm một cột

  3. Chênh lệch thời gian SQL trong một bảng

  4. Tự động tạo đối tượng PHP dựa trên chuỗi

  5. Cơ chế theo dõi các thay đổi giản đồ DB