Oracle12 sdo_nn не может вернуть объект кратчайшего расстояния - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть таблица NODES и таблица RESTAURANTS с их GEOLOC и координатами.

select n.geoloc.sdo_point.y as node_y, n.geoloc.sdo_point.x as node_x,
r.state as r_state, r.geoloc.sdo_point.y as r_y, r.geoloc.sdo_point.x as r_x,
sdo_nn_distance(1)  as distance_mi
from   DC_NODE n,  RESTAURANTS r
where   sdo_nn (n.geoloc, r.geoloc, 'Unit = MILE sdo_num_res = 1',1) ='TRUE'

NODE_Y NODE_X   R_state  R_Y   R_X   distance_mi
38.      -77.       AK   56.  -132.  2752.

Здесь sdo_nn_distance(1) и where sdo_nn(...) должны ограничивать набор результатов набором узлов и соответствующих ближайших ресторанов.Oracle, похоже, игнорирует самое короткое расстояние.

У меня есть записи гораздо ближе к узлу:

    --DC Restaurants are in the table
    select r.STATE, r.geoloc.sdo_point.y as r_y, r.geoloc.sdo_point.x as r_x
      from RESTAURANTS rwhere r.state = 'DC'

    DC  38. -77.
    DC  38. -76.
    DC  38. -77.

Почему Oracle игнорирует предложение "найти ближайший" и какэто исправить?

1 Ответ

0 голосов
/ 09 февраля 2019

Изменена последовательность аргументов для решения проблемы
sdo_nn (from_these_objects_to_choose.geoloc, for_each_of_these_objects.geoloc, 'Unit = MILE sdo_num_res = 1',1) ='TRUE'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...