Учитывая широту, долготу и радиус, найдите все контакты в этом регионе.Но таблица содержит только столбцы широты и долготы - PullRequest
0 голосов
/ 10 мая 2018

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

1 Ответ

0 голосов
/ 14 мая 2018

Я думаю, что у вас нет проблемы с plsql, вам нужна формула.Вот некоторый plsql-код, который вычисляет теорему Пифагора (https://en.wikipedia.org/wiki/Pythagorean_theorem):

declare
    v_yourX NUMBER := 0;
    v_yourY NUMBER := 0;

    v_anotherX NUMBER := 0;
    v_anotherY NUMBER := 1;

    v_diffX NUMBER;
    v_diffY NUMBER;

    v_distance NUMBER;
begin
    v_diffX := v_yourX - v_anotherX;
    v_diffY := v_yourY - v_anotherY;

    v_distance := sqrt(v_diffX*v_diffX + v_diffY*v_diffY);

    dbms_output.put_line('Distance: ' || v_distance); 
end;

. Вы хотите выбрать что-то из базы данных. Вот пример, как это сделать с помощью одного запроса:

SELECT t.*, sqrt(t.posX*t.posX + t.posY+posY) as distance FROM
(
    select (0 - :yourX) posX, (0 - :yourY) posY from dual UNION ALL -- fake-table
    select (1 - :yourX) posX, (2 - :yourY) posY from dual UNION ALL
    select (2 - :yourX) posX, (10 - :yourY) posY from dual
) t
WHERE sqrt(t.posX*t.posX + t.posY+posY) < :maxDistance
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...