Создать представление с пространственным запросом и ограничить результаты

БД Oracle 12c с локатором...

У меня есть 2 таблицы - table1 имеет столбец геометрии точек. Table2 имеет столбец полигональной геометрии. Я хочу создать представление только с полигонами table2, которые содержат ровно 1 точку из table1. Это возможно? Я пробовал следующее, но он по-прежнему возвращает многоугольники, содержащие несколько точек:

CREATE OR REPLACE FORCE EDITIONABLE VIEW VIEW1 AS
SELECT a.address, l.geometry as GEOMETRY
from table1 a 
inner join table2 l
on sdo_anyinteract(a.geometry, l.geometry) = 'TRUE'
having 2 >
(select count (a.address)
from table1 a 
inner join table2 l
on sdo_anyinteract(a.geometry, l.geometry) = 'TRUE');    

Любая помощь/совет будут оценены.


person user3120200    schedule 21.04.2017    source источник
comment
У вас есть первичные ключи в обеих таблицах (id)?   -  person Arkadiusz Łukasiewicz    schedule 21.04.2017
comment
@ArkadiuszŁukasiewicz Да   -  person user3120200    schedule 21.04.2017


Ответы (1)


Если я правильно понимаю, вы должны иметь возможность просто использовать простую группу и считать в условии наличия

SELECT
    a.address,
    l.id
FROM
    table1 a
    INNER JOIN table2 l ON (sdo_anyinteract(a.geometry,l.geometry) = 'TRUE')
GROUP BY
    a.address, l.id
HAVING
    COUNT(*) = 1;
person unleashed    schedule 21.04.2017
comment
Я не думаю, что это сработает, так как мне пришлось бы включить l.geometry в «группировать по», что дает ORA-22901: невозможно сравнивать атрибуты VARRAY или LOB типа объекта. - person user3120200; 21.04.2017
comment
Можете ли вы вместо этого использовать l.id, который вы могли бы использовать в группе? Затем использовать результаты для повторного соединения с таблицей2, чтобы получить геометрию? (отредактированный ответ) - person unleashed; 21.04.2017