Tôi có một cơ sở dữ liệu có khoảng 10 nghìn hàng hiện tại. Tất cả chúng đều có kinh độ/vĩ độ dựa trên trung tâm của một mã zip. Tôi tìm thấy một truy vấn mà bây giờ tôi đang cố gắng mở rộng, nhưng tất cả trong tất cả nó hoạt động tốt đến một điểm. Tuy nhiên, trong ví dụ của tôi dưới đây tôi đang cố gắng tìm những thứ trong bán kính 25 dặm, mà tất cả dường như làm việc cho hầu hết các phần. Hầu hết các kết quả của tôi làm mang lại trong các tiêu chuẩn 25 dặm, tuy nhiên tôi nhận được một số ít đó là cách tắt bất cứ điều gì từ 86 dặm đến 800 dặm ngoài khơi dấu.truy vấn kinh độ và vĩ độ mySQL cho các hàng khác trong bán kính x dặm
Ví dụ: Đây là trung tâm của tôi lat/lon: 37,2790669, -121,874722 = San Jose, CA Im nhận được kết quả như sau: 33,016928, -116,846046 = San Diego, CA đó là khoảng 355 dặm từ San Jose.
truy vấn hiện tại của tôi trông giống như:
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"
vui vì đã làm việc cho bạn – Gordnfreeman
Gordnfreeman, bạn có thể cho tôi biết chữ "<25" có nghĩa là gì không? Là 25 dặm hoặc km? Và tôi có một câu hỏi khác cho bạn nếu bạn không phiền khi trò chuyện nhanh với tôi? – dcolumbus
Có cách nào chúng ta có thể dễ dàng chuyển đổi điều này để sử dụng KM không? Tôi đoán nó có một cái gì đó để làm với 3935 ở đầu truy vấn, nhưng không hoàn toàn chắc chắn những gì nó làm. – joshhendo