Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie o długość i szerokość geograficzną mySQL dla innych wierszy w promieniu x mili

Oto zapytanie, którego używam w lokalizatorze sklepów, z którym pracuję:

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

:lat i :long są punktami przekazanymi przez użytkownika, gdzie lat i long to punkty przechowywane w bazie danych.

:odległość jest mierzona w milach, w działającej wersji kodu :odległość jest faktycznie pobierana z listy rozwijanej od 10 do 50 mil

Zmianę kodu, aby działał z kilometrami, można osiągnąć zmieniając 3959 (odległość od środka Ziemi do jej powierzchni w milach) na 6371 (3959 mil przeliczone na kilometry) dzięki joshhendo za to rozwiązanie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać zmiennej zdefiniowanej przez użytkownika MySql w .NET MySqlCommand?

  2. Prześlij na varchar

  3. connect ECONNREFUSED - węzeł js , sql

  4. Jak usunąć wszystkie zduplikowane rekordy w tabeli MySQL bez tabel tymczasowych?

  5. SQL Wybieranie z dwóch tabel z wewnętrznym sprzężeniem i limitem