Вот мой запрос:
select *
from (select *, 3956 * 2 * ASIN(SQRT(POWER(SIN(RADIANS(45.5200077 - lat)/ 2), 2) + COS(RADIANS(45.5200077)) * COS(RADIANS(lat)) * POWER(SIN(RADIANS(-122.6942014 - lng)/2),2))) AS distance
from stops
order by distance, route asc) as p
group by route, dir
order by distance asc
limit 10
Это прекрасно работает в командной строке и в PHPMyAdmin.Я использую Dbslayer для подключения к MySQL через мой бэкэнд JavaScript, и запрос возвращает ошибку 1064.
Вот кодированная строка запроса DBSlayer:
http://localhost:9090/db?{%22SQL%22:%22select%20*%20from%20%28select%20*,%203956%20*%202%20*%20ASIN%28SQRT%28POWER%28SIN%28RADIANS%2845.5200077%20-%20lat%29/%202%29,%202%29%20+%20COS%28RADIANS%2845.5200077%29%29%20*%20COS%28RADIANS%28lat%29%29%20*%20POWER%28SIN%28RADIANS%28-122.6942014%20-%20lng%29/2%29,2%29%29%29%20AS%20distance%20from%20%60stops%60%20order%20by%20%60distance%60,%20%60route%60%20asc%29%20as%20p%20group%20by%20%60route%60,%20%60dir%60%20order%20by%20%60distance%60%20asc%20limit%2010%22}
И ответ:
{"MYSQL_ERRNO": 1064, "MYSQL_ERROR": "У вас ошибка в синтаксисе SQL; проверьтеруководство, соответствующее вашей версии сервера MySQL для правильного синтаксиса для использования рядом с '(RADIANS (45.5200077)) * COS (RADIANS (lat)) * POWER (SIN (RADIANS (-122.6942014 - lng' в строке 1 "," SERVER "): "trimet"}
Спасибо!