Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Может кто нибудь знает как составить sql запрос
 
 автор: damen   (23.01.2013 в 13:59)   письмо автору
 
 

Может кто нибудь знает как составить sql запрос чтобы он делал выборку из базы данных, выбирал те объекты которые лежат между двумя точками на карте, можно просто по долготе, широту не брать во внимание.

Нашел формулу гаверсинус, но по ней можно сделать выборку только тех объектов которые лежат в радиусе от заданной точки:
$query = sprintf("SELECT address, name, rayon, lat, lng,
( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) )
AS distance FROM markers_ussearch HAVING distance < '%s' ORDER BY distance LIMIT 0 , 50"

  Ответить  
 
 автор: oradev   (23.01.2013 в 14:48)   письмо автору
 
   для: damen   (23.01.2013 в 13:59)
 

Приведите структуру бд, поможем.

  Ответить  
 
 автор: student174   (23.01.2013 в 14:56)   письмо автору
 
   для: oradev   (23.01.2013 в 14:48)
 

а нет ни какой структуры, в базе всего лишь одна таблица "markers_ussearch" с полями `id`, `name`, `address`, `lat`, `lng`

  Ответить  
 
 автор: Valick   (23.01.2013 в 15:06)   письмо автору
 
   для: student174   (23.01.2013 в 14:56)
 

а нет ни какой структуры
есть))
"markers_ussearch" с полями `id`, `name`, `address`, `lat`, `lng`
это и есть структура

  Ответить  
 
 автор: student174   (23.01.2013 в 15:12)   письмо автору
 
   для: Valick   (23.01.2013 в 15:06)
 

извиняюсь, спутал со схемой данных, плохо разбераюсь в бд

  Ответить  
 
 автор: oradev   (23.01.2013 в 16:01)   письмо автору
 
   для: student174   (23.01.2013 в 15:12)
 

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


SELECT address, name, rayon, lat, lng
FROM markers_ussearch
WHERE 
( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) < %s
ORDER BY 1
LIMIT 0,50

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования