2013-03-23 3 views
0

Не уверен, что тема правильно описывает, что я пытаюсь, но вот ситуация. У меня есть база данных координат x, y и местоположений, связанных с ними. Я бы хотел, чтобы пользователи представляли данные формы с координатой x и y и возвращали результаты в порядке близости sqrt ((x1-x2)^2 + (y1-y2)^2). Я не совсем уверен, как применить формулу расстояния к отображаемым результатам. Любые предложения о том, как это сделать?Заказ SQL-результатов на основе формулы расстояния

ответ

0

Его действительно не так сложно. Просто поставьте вычисление близости в позицию order by. Ваш SQL должен быть динамическим, поэтому вы можете заменить его на входные значения x и y. Я пошел дальше и выбрал также расчет близости, чтобы вы могли увидеть значение, используемое при сортировке.

выбрать местоположение, SQRT ((х- {х} входное значение)^2 + (у- {у входного значения})^2) как близость
от местоположений
упорядочить по SQRT ((х- {х входное значение})^2 + (y- {y входное значение})^2)

0

Функция квадратного корня монотонно возрастает, поэтому, если sqrt (a) больше, чем sqrt (b), то a больше b. Так что, если SQRT не доступен в вашем SQL диалекте, вы можете просто пропустить его:

ORDER BY (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) 

Добавим, что до конца вашего запроса.

Смежные вопросы