2013-03-09 7 views
0

Я пытаюсь сделать запрос, который выбирает пользователей, расположенных в области. Я эту таблицу:SQL, выберите геопозицию по области

Users (user_id, username, user_latitude, user_longitude)

У меня есть область, определенную на 2 пункта:

  • Северо-Запад (лат, LNG)
  • Юго-восток (lat, lng)

Как получить пользователей w с геопозицией, содержащейся на площади?

Спасибо :)

+0

Можете ли вы написать условие на простом английском языке (а не SQL), когда пользователь должен считаться принадлежащим к этой области? Подсказка: долгота и широта пользователя должны быть в определенном интервале. –

+0

Я предполагаю, что запрос будет примерно таким: user.lat <= NorthWest.lat && user.lng> = NorthWest.lng && user.lat> = SouthEast.lat && user.lng <= SouthEast.lng, Would not Это? –

+0

Вместо того, чтобы вставить его в комментарий, добавьте его в свой исходный пост. –

ответ

0

Наивный, но простой подход может выглядеть следующим образом, предполагается, что ваш район похож на прямоугольник:

SELECT * FROM Users WHERE (user_latitude >= 1.2393 AND user_latitude <= 1.5532) 
AND (user_longitude >= -1.8184 AND user_longitude <= -1.654) 

Для более сложных требований, вы должны использовать геопространственные функции.

+1

Или для более интуитивной формы мы можем использовать 'BETWEEN' –

+0

Правильно вы, это действительно более интуитивно. – cara