Mysql
 sql >> база данни >  >> RDS >> Mysql

mySQL заявка за дължина и ширина за други редове в радиус от x мили

Ето заявката, която използвам в локатора на магазини, с който работя:

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 и :long са точките, предавани от потребителя, където lat и long са точките, съхранени в базата данни.

Разстоянието :distance се измерва в мили, в работната версия на кода :distance всъщност се изтегля от падащо меню, вариращо от 10-50 мили

Промяната на кода за работа с километри може да се осъществи чрез промяна на 3959 (разстоянието от центъра на земята до повърхността й в мили) на 6371 (3959 мили, преобразувани в километри) благодарение на joshhendo за това решение.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се свържем дистанционно с MySQL база данни, разположена на нашия споделен сървър

  2. PDOException „не можа да намери драйвер“

  3. Как да премахнете интервали от низ в MySQL

  4. Не е намерен подходящ драйвер за 'jdbc:mysql://localhost:3306/mysql

  5. Позволете на потребителите на MySQL да създават бази данни, но позволяват достъп само до собствените си бази данни