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

Zapytania w celu znalezienia miejsc w obrębie danego łat/lng

Wdrażamy go mniej więcej tak, jak poniższy kod (zastrzeżenie:wyciąłem to z pliku i usunąłem kod, który nie miał związku z problemem. Nie uruchamiałem tego, ale powinieneś być w stanie zrozumieć ten pomysł.

$maxLat = $city->latitude + ($max_distance / 69); // 69 Miles/Degree
$minLat = $city->latitude - ($max_distance / 69);

$maxLon = $city->longitude + ($max_distance / (69.172 * cos($city->latitude * 0.0174533)));
$minLon = $city->longitude - ($max_distance / (69.172 * cos($city->latitude * 0.0174533)));

// Simplify terms to speed query
$originLatRadCos = cos($city->latitude * 0.0174533);
$originLatRadSin = sin($city->latitude * 0.0174533);
$originLonRad = $city->longitude * 0.0174533;

$city_distance_query = "
SELECT city_id, 
  3963 * acos(($originLatRadSin * sin( latitude * 0.0174533)) + 
  ($originLatRadCos * cos(latitude * 0.0174533) * cos((longitude * 0.0174533) -
  $originLonRad))) AS distanceFromOrigin
FROM cities
WHERE
 latitude < $maxLat AND latitude > $minLat AND longitude < $maxLon AND longitude > $minLon";

Pozostała część zapytania

SELECT cities.city_name, CityDistance.distanceFromOrigin,
FROM cities 
INNER JOIN ($city_distance_query) AS CityDistance ON CityDistance.city_id=cities.city_id
WHERE (distanceFromOrigin < $distance OR distanceFromOrigin IS NULL) 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyczna aktualizacja stanu pola Tabe sprawdzająca datę systemową za pomocą zapytania w mysql i java

  2. Szyfrowanie w spoczynku i/lub AES_ENCRYPT

  3. Dynamiczne tabele bazy danych w django

  4. liczba duplikatów mysql

  5. Symfony2 - Doctrine2 QueryBuilder GDZIE W polu ManyToMany