Первый запрос работает просто отлично. Возвращает одну строку из таблицы «точка маршрута». У этого есть определенный 'route_id', и 'geo_distance ()' находится на минимуме, учитывая параметры. Я знаю, что подзапрос в разделе FROM кажется излишне сложным, но на мой взгляд он помогает выделить проблему со вторым запросом.
Различия в последних двух строках.
SELECT rp.*
FROM routepoint rp, route r, (SELECT * FROM ride_offer WHERE id = 6) as ro
WHERE rp.route_id = r.id
AND r.id = ro.current_route_id
AND geo_distance(rp.lat,rp.lng,52372070,9735690) =
(SELECT MIN(geo_distance(lat,lng,52372070,9735690))
FROM routepoint rp1, ride_offer ro1
WHERE rp1.route_id = ro1.current_route_id AND ro1.id = 6);
Следующий запрос не работает вообще. Он полностью зависает MySQL и я должен перезагрузить.
Что я делаю неправильно? Первый подзапрос возвращает ровно одну строку. Я не понимаю разницу.
SELECT rp.*
FROM routepoint rp, route r, (SELECT * FROM ride_offer WHERE id = 6) as ro
WHERE
rp.route_id = r.id
AND r.id = ro.current_route_id
AND geo_distance(rp.lat,rp.lng,52372070,9735690) =
(SELECT MIN(geo_distance(lat,lng,52372070,9735690))
FROM routepoint rp1
WHERE rp1.route_id = ro.current_route_id);