Сортировка по дистанции и групировка по типу

Есть запрос который выводит ближайшие объекты по широте и долготе

Select id, lat, lon, name, type,
acos(sin(:lat)*sin(radians(lat)) + cos(:lat)*cos(radians(lat))*cos(radians(lon)-:lon)) * :R As D
From (
Select id, lat, lon, name, type
From `TABLE 254`
Where lat Between :minLat And :maxLat
And lon Between :minLon And :maxLon
) As FirstCut
WHERE acos(sin(:lat)*sin(radians(lat)) + cos(:lat)*cos(radians(lat))*cos(radians(lon)-:lon)) * :R < :rad
Group by `type`
Order by `D` 

Получаем следующее

name            type         
Остановка       bus_stop    31.472 км
Баканская       station     44.109 км
17 км           halt        47.006 км

Проблема в том, что полученные записи не являются самыми ближайшими, так как Group by группирует по своему

Без Group by type и Order by D

Баканская   station     44.109 км
Киевский    station     49.927 км
Анапа       station     6.831 км
17 км       halt    47.006 км
805 км      halt    38.751 км
Убых        halt    28.439 км
Остановка   bus_stop    31.472 км
Алексино    bus_stop    45.838 км
Центр       bus_stop    22.668 км

Без Group by type

Анапа       station     6.831 км
Центр       bus_stop    22.668 км
Убых        halt        28.439 км
Остановка   bus_stop    31.472 км
805 км      halt        38.751 км
Баканская   station     44.109 км
Алексино    bus_stop    45.838 км
17 км       halt        47.006 км
Киевский    station     49.927 км

а нужно так

Анапа       station     6.831 км
Центр       bus_stop    22.668 км
Убых        halt        28.439 км

Подскажите, что изменить в запросе, чтобы с начало происходила сортировка по D (Дистанции), а потом группировка по type


Ответы (0 шт):