У меня есть таблица 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 игнорирует предложение "найти ближайший" и какэто исправить?