sql >> Databasteknik >  >> RDS >> Mysql

Hitta närmaste 10 städer med MySQL med hjälp av latitud och longitud?

Du kan inte använda att ha eftersom du inte grupperar efter någonting. Vad du behöver göra är att upprepa vad du gjorde i markeringen i var.

$query = "SELECT *, 
( 3959 * acos( cos( radians('$slatitude') ) * 
cos( radians( latitude ) ) * 
cos( radians( longitude ) - 
radians('$slongitude') ) + 
sin( radians('$slatitude') ) * 
sin( radians( latitude ) ) ) ) 
AS distance FROM cities WHERE ( 3959 * acos( cos( radians('$slatitude') ) * 
cos( radians( latitude ) ) * 
cos( radians( longitude ) - 
radians('$slongitude') ) + 
sin( radians('$slatitude') ) * 
sin( radians( latitude ) ) ) ) < '$miles' ORDER BY distance ASC LIMIT 0, 10";

eller så kan du göra något så här:

$query = "
SELECT * FROM (
  select *, 
  ( 3959 * acos( cos( radians('$slatitude') ) * 
  cos( radians( latitude ) ) * 
  cos( radians( longitude ) - 
  radians('$slongitude') ) + 
  sin( radians('$slatitude') ) * 
  sin( radians( latitude ) ) )) as distance from cities
) WHERE distance < '$miles' ORDER BY distance ASC LIMIT 0, 10";


  1. SQL Server 2008 - Körs en trigger med samma behörigheter som inloggningen/användaren?

  2. Stöder din ODBC-drivrutin användardatakällor?

  3. Skapa hierarkisk JSON från MySQL-resultat och PHP för D3.js-trädet?

  4. Hitta överlappande (datum/tid) rader i en tabell