Сортировка результатов в таблице MySQL по долготе, а затем по широте, НЕ по круговому радиусу - PullRequest
1 голос
/ 17 ноября 2010

Привет всем ... Мне было поручено глобальный поисковый проект. Они хотят искать в базе данных изображений, все с длинным / лат ссылки хранятся для каждого изображения в базе данных mysql.

Однако их критерии поиска немного конкретны.

Упрощенная структура таблицы: id INT auto, включая основной imagePath Варчар 255 long СРОКИ 12,7 lat ДЕЦИМАЛЬНО 12,7

Мне нужно предоставить оператору SQL начальную позицию long / lat. Затем они хотят получить 34 изображения, идущие на юг от их первоначального длинная ссылка .. как только они доберутся до -90 (низ земли), чтобы выскочить более 1 градуса вправо / восток и поиск на север до 90 и повторять до тех пор, пока не будет найдено 34 изображения.

Что меня смущает, так это как рассчитать минус плюс изменения .. гарантируя, что мы петли вверх и вниз вдоль "длинного" эталона земли.

Кто-нибудь делал это раньше? Я бы хотел сделать это в одном запросе ... (Я видел, как можно получить результаты на основе радиуса круга, но мой клиент ... благослови их ... не хочет этого делать)

Хорошо, вернемся к Google !!

Мысли ...

Трис ...

1 Ответ

1 голос
/ 18 ноября 2010

Входными данными являются $ the_lat и $ the_long

SELECT * 
FROM table
WHERE long > $the_long
OR ( long = $the_long AND lat >= $the_lat)
ORDER BY long ASC, lat ASC
LIMIT 34

Как и раньше, это однонаправленный поиск - он не будет переходить в длинные <$ the_long. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...