Ich glaube, Sie haben in Ihrer ersten Abfrage die Längengrade bei der Subtraktion invertiert. Das sphärische Kosinusgesetz lautet:
d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2−long1))*R
Wenn lat1 durch tblcity.latitude ersetzt wird, muss long1 durch tblcity.longitude ersetzt werden. Ich glaube, Sie haben versehentlich long2 in Ihrer Abfrage ersetzt. Funktioniert dieser besser?
SELECT tblcity.city, tblcity.latitude, tblcity.longitude,
truncate((degrees(acos( sin(radians(tblcity.latitude))
* sin(radians(45.266708))
+ cos(radians(tblcity.latitude))
* cos(radians(45.266708))
* cos(radians(-73.616257 - tblcity.longitude) ) ) )
* 69.09*1.6),1) as distance
FROM tblcity HAVING distance < 10 ORDER BY distance desc
Ich habe mir Ihre zweite Frage noch nicht angesehen, aber das hilft hoffentlich weiter.