Я пытался заставить это работать, используя ORDER BY и LIMIT, но он выведет все, что было вставлено. ORDER BY и LIMIT, похоже, не работают:
$lat1 = 37.349418;
$lon1 = -121.896286;
$distance = 25;
$q = "SELECT * FROM cityname WHERE feature_class = 'A' OR feature_class = 'P'";
$r = mysql_query($q) or die(mysql_error());
while ($row = mysql_fetch_array($r)) {
$lat = trim($row["latitude"]);
$lon = trim($row["longitude"]);
$name = $row["name"];
$pop = $row["population"];
$miles = distance($lat, $lon, $lat1, $lon1, "m");
$milesrounded = round($miles, 2);
if ($miles < $distance) {
if ($pop > 0) {
$q2 = "CREATE TEMPORARY TABLE IF NOT EXISTS `templocation4` (
`cityname` varchar(75) NOT NULL,
`distance` double NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1";
$r2 = mysql_query($q2) or die(mysql_error());
$q1 = "INSERT INTO templocation4 (cityname, distance) VALUES ('$name', '$milesrounded')";
$r1 = mysql_query($q1) or die(mysql_error());
$q3 = "SELECT MIN(distance) FROM templocation4 GROUP BY distance DESC LIMIT 10";
$r3 = mysql_query($q3) or die(mysql_error());
while ($row1 = mysql_fetch_array($r3)) {
echo $row1["cityname"];
echo " ";
echo $row1["distance"];
echo "<br>";
}
$q5 = "DROP TABLE templocation4";
$r5 = mysql_query($q5) or die(mysql_error());
}
}
}
В таблице cityname содержится> 250K записей, и я пытаюсь отсортировать ее по ближайшему названию города на основе широты / долготы, введенной пользователем.
Спасибо.