Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Ну ОЧЕНЬ сложный запрос... (klax) 15/04/2008 - 20:12:08
      Re: Ну ОЧЕНЬ сложный запрос... (klax) 15/04/2008 - 23:47:50
      Re: Ну ОЧЕНЬ сложный запрос... (Lev) 16/04/2008 - 08:20:34
      Re: Ну ОЧЕНЬ сложный запрос... (klax) 16/04/2008 - 13:00:46
      Re: Ну ОЧЕНЬ сложный запрос... (Lev) 16/04/2008 - 13:24:40
      Re: Ну ОЧЕНЬ сложный запрос... (klax) 16/04/2008 - 13:42:40
      Re: Ну ОЧЕНЬ сложный запрос... (klax) 16/04/2008 - 13:48:39
      Re: Ну ОЧЕНЬ сложный запрос... (Lev) 16/04/2008 - 18:05:50
      Re: Ну ОЧЕНЬ сложный запрос... (klax) 19/04/2008 - 20:45:44

> Original message text:
> From: klax - 15/04/2008 - 20:12:08
> Subject:Ну ОЧЕНЬ сложный запрос...
> -----------------
> Есть база данных со следующими полями:
> id x y z
> где id - уникальный номер точки,
> x y z -- координаты точки по трем осям.
>
> Есть несколько точек:
> 1 1 1 1
> 2 4 3 5
> 3 12 4 7
> 4 -2 -1 1
> 5 3 2 2
>
> Задача:
> Нужно найти три точки с наименьшим расстоянием до точки 1(1;1;1).
> Ожидается несколько сотен тысяч точек.
>
>


From: klax - 15/04/2008 - 23:47:50
Subject:Ну ОЧЕНЬ сложный запрос...
-----------------
Я тут подумал и пришел к выводу, что можно ограничить кубом со стороной 'n' единиц пространство вокруг этой точки, и взять все точки из этого пространства.
Потом взять каждую и точку и посчитать расстояние от нее до нужной точки. Далее сделать сортировку этих точек по расстоянию и взять только 3 точки.
Должно получиться что-то типа такого запроса:

SELECT * FROM `table` WHERE (((`X` < X + n/2) AND (`X` > X - n/2)) AND ((`Y` < Y + n/2) AND (`Y` > Y - n/2)) AND ((`Z` < Z + n/2) AND (`Z` > Z - n/2)));

Поправьте, плиз, если где ошибся. Или подскажите, как сделать другой запрос, чтобы взять все точки в этом кубе.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
33452



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |